我有一个数据帧的命名列表。我需要使用数据框的名称为每个数据框创建一个新变量,以便最终将它们全部绑定以进行统计和绘图。
我知道lapply不会传递对象的名称,并且有很多类似问题的帖子,但是我只是无法针对我的特定问题采用我所见过的任何解决方案。
这是我第一次尝试过的方法,但是显然不起作用,因为names(x)没有返回对象的名称。
TestList <-list(a = data.frame(Var1 = 1:5,Var2 = 5:1), b = data.frame(Var1 = 6:10,Var2 = 10:6))
lapply(TestList,function(x,y = names(x)){x $ Var3 <-y; return(x)})
我也尝试过使用seq_along,但是后来我迷失了如何为每个数据帧创建新变量。
是否通过索引传递?如果是这样,我可以使用
创建一个新对象名称(测试列表)
,然后从那里获取名称。我也找不到该怎么做。
最后,这就是我需要获得的:
DesiredTestList <-list(a = data.frame(Var1 = 1:5,Var2 = 5:1,Var3 = rep(“ a”,5)),b = data.frame(Var1 = 6:10, Var2 = 10:6,Var3 = rep(“ b”,5)))
答案 0 :(得分:0)
我知道了。我只是希望lapply将对象的名称传递给函数。无论如何,这就是我的工作方式:
GotTheTestList <- lapply(seq_along(TestList), function(x){TestList[[x]]$Var3 <- names(TestList)[x]; return(TestList[[x]])})
答案 1 :(得分:0)
对于最终数据框,我需要找到一个更简单的解决方案
bind_rows(TestList, .id = "Var3")