0
我想要將一個標識符列添加到data.frames列表(在未列出它們之前)。我嘗試使用lapply
:將新的值列設置爲數據列表。框架
names = c('a', 'b')
d1 <- data.frame(y1=c(1,2,3),y2=c(4,5,6))
d2 <- data.frame(y1=c(3,2,1),y2=c(6,5,4))
my.list <- list(d1, d2)
lapply(seq_along(my.list), function(x) my.list[[x]]$names = names[[x]])
但這返回
相反的:
[[1]]
y1 y2 names
1 1 4 a
2 2 5 a
3 3 6 a
[[2]]
y1 y2 names
1 3 6 b
2 2 5 b
3 1 4 b
編輯:我一直在使用index(my.list)
(從zoo
)。編輯,以seq_along(my.list)
留在基礎R
'index'不是基礎R的功能。請包括您使用的任何軟件包的名稱。 ('seq_along(my.list)'就足夠了)。 – lmo
fwiw,'dplyr :: bind_rows'和'data.table :: rbindlist'都能夠使用列表中的名字自動添加一個id列。 – joran
您需要返回已更改的data.frame。 'lapply(my.list),function(x){my.list [[x]] $ names = names [[x]]; my.list [[x]]})'會起作用。另外,'lapply(seq_along(my.list),function(x)transform(my.list [[x]],names = names [[x]]))''。 – lmo