我写了一个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
}
注: 我将数据打包在列表中,以便在.xls中轻松导出 而且我知道这是一种非常简单的方法......但是它有效。
我愿意学习:-)因为我读了很多,应该避免循环并使用" apply"与功能相结合。我尝试使用apply和函数来解决任务。但是我无法得到结果,函数的使用和应用对我来说似乎要复杂得多。因此,总是值得避免循环吗?如果是的话,你会怎么做?
谢谢,Christian
答案 0 :(得分:7)
您似乎只是将每列重新整形为矩阵。怎么样只是
container <- lapply(df, matrix, byrow=T, ncol=12)
如果您确实需要data.frame,请尝试
container <- lapply(df, function(x) data.frame(matrix(x, byrow=T, ncol=12)))