通过申请避免循环 - 值得麻烦吗?

Chr*_*hee 4 r

我写了一个Rscript来以一种理想的格式提供一些数据.特别是我只想重新排列数据集,最终得到8行12列(96孔板格式).我嵌套了两个for循环,工作得非常好:

element1 = seq(1,96,1)
element2 = seq(0.5,48,0.5)
df = data.frame(element1,element2)
storage = data.frame(matrix(NA,nrow = 8, ncol = 12))
container = vector("list",ncol(df))

for (n in 1:ncol(df)){
      j = 0  
        for (i in seq(1,length(df[,n]),12)) { 
              j = j+1
              storage[j,] = df[(i):(i+11),n]  
          }
     container[[n]]=storage

}
Run Code Online (Sandbox Code Playgroud)

备注:我将数据打包在列表中以便于在.xls中导出.
我知道这是一种非常简单的方法......但它有效

然而,我愿意学习:-)因为我读了很多,应该避免使用循环并使用"apply"与函数组合.我尝试使用apply和函数来解决任务.但是我无法得到结果,函数的使用和应用对我来说似乎要复杂得多.因此,总是值得避免循环吗?如果是的话,你会怎么做?

谢谢,克里斯蒂安

MrF*_*ick 7

您似乎只是将每列重新整形为矩阵.怎么样

container <- lapply(df, matrix, byrow=T, ncol=12)
Run Code Online (Sandbox Code Playgroud)

如果你真的需要data.frame,试试吧

container <- lapply(df, function(x) data.frame(matrix(x, byrow=T, ncol=12)))
Run Code Online (Sandbox Code Playgroud)