使用N个向量的字符元素子集数据帧

时间:2014-11-18 17:31:40

标签: r dataframe subset

我的数据框有55列,名为df.example。这个df的每一列都有一个标题,让我们说“A1”,“A2”到“A55”

我在一个名为Factor.lst的列表中还有16个元素,它们重新组合了55个标题。

现在我想使用名为Factor的16个元素中的编码标题对df.example进行子集化。例如,我试过这种方式:

F1 <- subset(df.example, select=c(get(Factor.lst)))

或者

F1 <- subset(df.example, select=c(get(Factor.lst[1:16])))

1 个答案:

答案 0 :(得分:1)

尝试

 res <- lapply(mget(ls(pattern="^Factor\\d+")),
               function(x) subset(df.example, select=x))


 lapply(res, head,2)
 #$Factor1
 #  A5 A8 A32
 #1  2  5  18
 #2 12 15  10

 #$Factor2
 #  A1 A7 A52
 #1  6  7  10
 #2  5  5   9

 #$Factor3
 # A9 A13 A42
 #1 10  10  20
 #2  8   5  11

更新

如果你想对Factor.lst

做同样的事情
  Map(`[`, list(df.example), Factor.lst)

数据

Factor1 <- paste0("A", c(5,8, 32))
Factor2 <- paste0("A", c(1, 7, 52))
Factor3 <- paste0("A", c(9, 13, 42))
Factor.lst <- list(Factor1, Factor2, Factor3)

set.seed(24)
df.example <- as.data.frame(matrix(sample(1:20, 55*5, replace=TRUE),
                     ncol=55, dimnames=list(NULL, paste0("A", 1:55))))