在列表列表中过滤数据表

时间:2016-12-30 15:47:33

标签: r

我正在创建一个数据源的多个子集,然后以几种不同的方式绘制图形并输出到pdf。我创建了一个for循环来创建所有内容并操纵数据,但是当我尝试子集时,返回的数据集是空的。我创建了一个简单的例子来展示我在下面遇到的问题。

我应该考虑不同的方式吗?

id <- c(rep("a",20),rep("c",10),rep("d",10),rep("e",20),rep("f",20),rep("g",20))
x <- rnorm(n=100, mean=1323, sd=6.432)
dt <- data.table(id, x)

class1 <- c("a","e","g")
class2 <- c("c","F")
class3 <- c("b","d")

classes <- list(class1,class2,class3)

dtNames <- c("c1","c2","c3")

#this doesn't work
for(i in 1:length(classes)){
  assign(dtNames[i],dt[dt$id %in% classes[i],])
}

#this does work
assign(dtNames[1],dt[dt$id %in% class1])

1 个答案:

答案 0 :(得分:1)

我们需要使用[[来提取list元素

for(i in seq_along(classes)){
  assign(dtNames[i], dt[id %chin% classes[[i]]])
 }

注意:最好不要在全局环境中创建多个对象。