我正在将csv文件从列表读入一个数据集,使用
x <- do.call(rbind, lapply(list, fread))
我想在x
中添加一列,指示与每行对应的文件名。list
看起来像这样:
[[1]] '~/amsterdam.csv'
[[2]] '~/atlanta.csv'
[[3]] '~/bangalore.csv'
我希望x
如下所示
V1 V2 city
2.5 3.4 '~/amsterdam.csv'
5.4 1.1 '~/bangalore.csv'
3.4 2.9 '~/atlanta.csv'
0.5 9.8 '~/bangalore.csv'
有没有一种方法,使用我使用的命令,将x的每一行链接到它所来自的文件?
我目前使用一个循环来完成这一任务(读入文件,然后添加与文件名对应的列,然后将所有文件绑定在一起),但我想知道是否有更快更干净的方法来完成这一任务。
3条答案
按热度按时间p5fdfcr11#
我觉得这样应该行得通:
当然还有这个
ttcibm8c2#
如果你使用的是
data.table
,尝试rbindlist
而不是do.call(rbind...
。你可以使用idcol
参数添加一个新的列City
,该列将为每个 Dataframe 提供一个索引,以后可以从list
中为这些 Dataframe 赋值。还要注意的是,list
是R中的一个内部函数,最好避免将其用作变量名。0ejtzxu13#
带有
data.table