如何使用每一行的数据来循环创建矩阵

All*_* Yu 0 for-loop r matrix

我有一个数据框

df<-data.frame(a=c(1,2,3),b=c(4,5,6),c=c(7,8,9),d=c(10,11,12))
  a b c  d
1 1 4 7 10
2 2 5 8 11
3 3 6 9 12
Run Code Online (Sandbox Code Playgroud)

我想用每一行来创建3(nrow(df))2*2矩阵.第一次使用1,4,7,10,第二次使用2,5,8,11,第三次使用3,6,9,12.这样我就可以得到3个矩阵.谢谢.

akr*_*run 5

我们可以使用split将数据集拆分成list并使用matrix

lapply(split.default(as.matrix(df), row(df)), matrix, 2)
Run Code Online (Sandbox Code Playgroud)

如果我们需要矩阵列为1,7,然后是4,10,请使用 byrow=TRUE

lapply(split.default(as.matrix(df), row(df)), matrix, 2, byrow=TRUE)
Run Code Online (Sandbox Code Playgroud)

或者使用apply具有MARGIN = 1与包装它list得到一个list输出

do.call("c", apply(df, 1, function(x) list(matrix(x, ncol=2))))
Run Code Online (Sandbox Code Playgroud)

如果我们需要一个for循环,预先指定alistlength等于"东风"的行数

a <- vector("list", nrow(df))
for(i in 1:nrow(df)){ a[[i]] <- matrix(unlist(df[i,]), ncol=2)}
a
Run Code Online (Sandbox Code Playgroud)

或者如果它可以存储为 array

array(t(df), c(2, 2, 3))
Run Code Online (Sandbox Code Playgroud)