【发布时间】:2014-05-02 15:32:56
【问题描述】:
我有许多具有相同结构的数据框(从 CSV 导入)。我想遍历所有这些数据框并只保留其中两列。
下面的循环似乎不起作用,有什么想法吗?理想情况下,我想使用循环来做到这一点,因为我正试图更好地使用这些。
frames <- ls()
for (frame in frames){
frame <- subset(frame, select = c("Col_A","Col_B"))
}
提前为任何建议喝彩。
【问题讨论】:
-
1) 它是
list,而不是ls; 2)您需要提供索引到框架,如frames[[frame]] <- subset(...); 3)“帧中帧”没有意义,因为您刚刚使用frames <- list()创建了一个空列表——它应该类似于for (frame in 1:5) -
好吧,除非您打算将列表设为
ls,否则我不建议这样做 -
ls() 部分工作正常:'frames' 包含要操作的所有数据帧的列表,但是循环给出错误“参数“子集”缺失,没有默认值'
-
您可以使用参数
colClasses仅读取您想要的列。详情here. -
建议:
rm(list = ls())后跟frames <- lapply(files, read.table),其中files是文件名向量