【发布时间】:2016-02-28 19:10:05
【问题描述】:
我想在多个 data.tables(或 data.frames)中执行相同的操作。例如,我想在所有 data.tables 中以相同的规则为条件创建相同的变量。
一个简单的例子可以是(df1=df2=df3,这里不失一般性)
df1 <- data.frame(var1 = c(1, 2, 2, 2, 1), var2 =c(20, 10, 10, 10, 20), var3 = c(10, 8, 15, 7, 9))
df2 <- data.frame(var1 = c(1, 2, 2, 2, 1), var2 =c(20, 10, 10, 10, 20), var3 = c(10, 8, 15, 7, 9))
df3 <- data.frame(var1 = c(1, 2, 2, 2, 1), var2 =c(20, 10, 10, 10, 20), var3 = c(10, 8, 15, 7, 9))
我的方法是:(i) 创建数据框列表 (list.df),(ii) 在此列表上循环尝试创建变量:
list.df
list.df<-vector('list',3)
for(j in 1:3){
name <- paste('df',j,sep='')
list.df[j] <- name
}
我的(坏的)试探性的:
for(i in 1:3){
a<-get(paste(list.df[[i]], "$var1", sep=""))
b<-get(paste(list.df[[i]], "$var2", sep=""))
name<-paste(list.df[[i]], "$var.new", sep="")
assign(name, ifelse(a==2 & b==10, 1, 0))
}
显然r 无法按照我的方式创建这个新变量,因为我收到一条错误消息“找不到对象”。
关于如何修复我的错误代码的任何线索?我有一种感觉 dplyr 可以帮助我,但我不知道如何。
【问题讨论】:
-
暂定代码块出现一些错误。你能显示预期的输出吗
-
是的,完全正确。出现“找不到对象”的错误,因为我的试探不起作用,@akrun。我应该写“bad tentative”。对此深表歉意。
-
刚刚注意到。使用
$将无法按预期工作。另外,您是否在每个数据集中创建新变量“var.new”? -
我认为 $ 不起作用,但老实说,我不知道如何以另一种方式解决问题。我没有事先创建“var.new”。事实上,我曾想过这样做,但我意识到我最终使用了相同的方法(不好的尝试),所以它没有奏效。
-
请尝试下面发布的解决方案。从显示的代码来看,我猜你需要创建一个列。