我在使用不同data.frames的循环时遇到问题,无法选择某些行。这是一个简单的例子。
我这里有三个data.frames:
Died.At <- c(22,40,72,41)
Writer.At <- c(16, 18, 36, 36)
Sex <- c("MALE", "MALE", "MALE", "FEMALE")
europe<-data.frame(Died.At, Writer.At, First.Name, Second.Name, Sex)
Died.At <- c(22,40,72,41)
Writer.At <- c(50, 28, 46, 16)
Sex <- c("MALE", "MALE", "MALE", "FEMALE")
africa<-data.frame(Died.At, Writer.At, First.Name, Second.Name, Sex)
Died.At <- c(22,40,72,41)
Writer.At <- c(30, 18, 96, 66)
Sex <- c("MALE", "MALE", "MALE", "FEMALE")
asia<-data.frame(Died.At, Writer.At, First.Name, Second.Name, Sex)
我想选择[Writer.At&lt; = 20]的个人而且我想用这些个人重写每个数据库。所以我尝试了这个:
for (i in c(europe,africa,asia)){
A.i<-i[i$Writer.At>=20]
}
我得到的是这个警告:i $ Writer.At:$运算符对原子向量无效
我不明白为什么。你能帮我解决这个问题吗?
答案 0 :(得分:1)
您的解决方案不起作用,因为“i”指的是每个数据框中的值,而不是数据框的名称。一个解决方案是这样的:
declare variable $foo external;
concat("Value of $foo is: ", $foo)
或者,您可以组合列表中的数据框并执行以下操作:
for (i in c("europe","africa","asia")){
df<-get(i)
df<-df[df$Writer.At>=20,]
assign(paste0("A",i), df)
}