我写了一个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和函数来解决任务.但是我无法得到结果,函数的使用和应用对我来说似乎要复杂得多.因此,总是值得避免循环吗?如果是的话,你会怎么做?
谢谢,克里斯蒂安
您似乎只是将每列重新整形为矩阵.怎么样
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)
| 归档时间: |
|
| 查看次数: |
112 次 |
| 最近记录: |