私の目標は、この開始インデックスのリストを次のように使用して、インデックス シーケンスのリストを生成することです。
values <- matrix (1:25, nrow=5)
indexMatrix <- matrix (seq_along (values) , nrow=nrow(values))
fWidth <- 2
startIndices<- list (
vert=indexMatrix [1:(nrow (values)-fWidth) , 1:ncol (values)],
horiz=indexMatrix [1:nrow (values) , 1:(ncol (values)-fWidth)] ,
upDiag=indexMatrix [fWidth:(nrow (values) - fWidth) , 1:(ncol (values) - fWidth) ] ,
dnDiag=indexMatrix [1: (nrow (values) - fWidth) , 1: (ncol (values) - fWidth) ]
)
startIndices
このコードを使用して、これらのサブセットを開始点として使用してシーケンスを生成しようとしています。これは、元のマトリックスのサブセットである各サブリストを介してメイン リストをステップスルーし、*x、x+fun のシーケンスを生成することを願っています。 x+2*fun, x+3*fun...* (the ) 部分、各サブリスト (これが部分)lapply
のリストとは異なる値を使用して、それらすべてを 1 つの大きなリストにマージします (inこの例では、3 要素) リストです。私の問題は に適切な引数を渡していないようですが、各値からシーケンスを生成するために、これを各サブリストでベクトル化することを意図していました。funs
for
from
seq
funs<-c(1 , nrow (values) , nrow (values) - 1 , nrow (values) + 1
)
#browser()
seqs<- for (i in seq_along (startIndices)){
unlist (
lapply (startIndices [i] ,
seq , by=funs[i] , to=fWidth*funs[i]) , #from=n from indexMatrices[i]
FALSE , FALSE
)
}
このコードにより、エラー メッセージが表示されますError in seq.default(X[[1L]], ...) : 'from' must be of length 1
。lapply
関数の仕組みについて根本的な誤解をしているようです。提供された関数の引数のリストとして初期データセットを使用すると思っていましたが、リスト項目だけではなく、リスト全体を使用しているようです。これは、行列 ( n = ) 内のn 個の隣接するすべての値の積を計算する、より大きな関数の一部です。width
私の目的の出力は、次のようにシミュレートできます。
startIndices <- sapply (startIndices, as.vector)
attach (startIndices)
startIndices$vert <- matrix (c(vert, vert+1, vert+2), nrow=3, byrow=TRUE )
startIndices$horiz <- matrix (c(horiz, horiz+5, horiz+10), nrow=3, byrow=TRUE)
startIndices$upDiag <- matrix (c(upDiag, upDiag+4, upDiag+8), nrow=3, byrow=TRUE)
startIndices$dnDiag <- matrix (c(dnDiag, dnDiag+6, dnDiag+12), nrow=3, byrow=TRUE)
df <- lapply (startIndices, as.data.frame)
unlist (lapply (df, as.list), FALSE, FALSE)