我的数据框有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])))
答案 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))))