R - 循环中多个数据帧的新变量

时间:2016-05-30 10:17:13

标签: r loops dataframe

在R中,我有几个数据集,我想使用循环在每个数据集中创建新的变量(列):

所有数据帧都具有相同的名称结构,因此我正在使用它来循环它们。这是我想要做的一些伪代码

Name = Dataframe_1       #Assume the for-loop goes from Dataframe_1 to _10 (loop not shown)

#Pseudo-code 
eval(as.name(Name))$NewVariable <- c("SomeString")     #This is what I would like to do, but I get an error ("could not find function eval<-")

因此,我应该使用一个额外的列(NewVariable)具有相同的数据帧,其中所有行都具有值"SomeString"

如果我使用eval(as.name(Name))我可以毫无问题地调用数据帧Name,但通常的数据帧运算符似乎都不适用于该特定调用(不是&lt; - assignment,或$或[[]])

任何想法都会受到赞赏,提前谢谢!

1 个答案:

答案 0 :(得分:1)

我们可以将数据集放在list中,并通过使用list循环lapply来创建新列。如果需要,可以使用list2env更新原始数据框对象。

lst <- mget(paste0('Dataframe_', 1:10))
lst1 <- lapply(lst, transform, NewVariable = "SomeString")
list2env(lst1, envir = .GlobalEnv())

或另一个选项是assign

nm1 <- ls(pattern = "^Dataframe_\\d+")
nm2 <- rep("NewVariable", length(nm1))
for(j in seq_along(nm1)){
   assign(nm1[j], `[<-`(get(nm1[j]), nm2[j], value = "SomeString"))
 }