所以我有:
1)许多4列的csv文件
2) file_storage_names - 文件名的字符向量,我需要打开,读取和写入这些文件中的所有信息到列表中
3) data_storage - 我在其中做事的列表(2)
我需要:
vector clm ,它由data_storage中所有文件的所有第二列组成
我做了什么:
data_storage<-list()
clm<-data.frame()
for (i in 1:length(file_storage_names))
{
data_storage[[i]] <-read.csv(file_storage_names[i])
clm<-c(data_storage[[i]][[2]])
}
我担心:a)我做得对吗? b)我是否进入 clm 一个长向量或向量载体?
答案 0 :(得分:0)
你至少做了一些正确的事情。循环和将数据帧分配到列表中是一种非常标准的读取大量文件的方法。我假设您需要保存文件数据以供日后使用;否则你不需要建立清单。
clm <- c(data_storage[[i]][[2]])
看起来不正确。您将获得第i个数据框的第二列并将其分配给clm。但是每次循环时都会覆盖clm。我认为你想要的是
clm <- c(clm, data_storage[[i]][[2]])
在执行循环之前用
初始化clmclm <- NULL
(假设您希望clm成为矢量)
这将为您提供一个长向量的结果(R中没有向量的向量,因为您可以在命令提示符下键入例如c(1, 2, c(3, 4))
来验证。
或许您打算使用clm[[i]] <- c(data_storage[[i]][[2]])
并将数据收集为列表或数据框。