【发布时间】:2014-04-10 19:06:49
【问题描述】:
所以,我创建了一个 csv 文件列表:
tbl = list.files(pattern="*.csv")
然后我将它们分成两个不同的列表:
tbl1 <- tbl[c(1,3:7,10:12,14:18,20)]
tbl2 <- tbl[c(2,19,8:9,13)]
然后加载它们:
list_of_data1 = lapply(tbl1, read.csv)
list_of_data2 = lapply(tbl2, read.csv)
现在我想创建一个主文件。我只想从每个 csv 文件中选择一些数据并将其存储在一个表中。为此,我创建了这样的循环:
gdata1 = lapply(list_of_data1,function(x) x[3:nrow(x),10:13])
for( i in 1:length(list_of_data1)){
rownames(gdata1[[i]]) = list_of_data1[[i]][3:nrow(list_of_data1[[i]]),1]
}
tmp = lapply(gdata1,function(x) matrix(as.numeric(x),ncol=4))
final.table1=c()
for(i in 1:length(gnames)){
print(i)
tmp=gnames[i]
f1 = function(x) {x[tmp,]}
tmp2 = lapply(gdata1,f1)
tmp3 = c()
for(j in 1:length(tmp2)){
tmp3=rbind(tmp3,tmp2[[j]])
}
tmp4 = as.vector(t(tmp3))
final.table1 = rbind(final.table1,tmp4)
}
rownames(final.table1) = gnames
我创建了两个不同的数据列表,因为在第一个 list_of_data1 中有四个对我来说很有趣的列 (10:13),而在另一个 list_of_data2 中只有 3 个列 (10:12)。我想将所有数据放在一个表中。有什么办法可以一次性完成吗?
我知道如何解决这个问题。我可以为list_of_data2 创建一个新循环,然后使用cbind 绑定它们。我想以更优雅的方式做到这一点,所以这就是我来这里的原因!
【问题讨论】: