0

我想通过正则表达式从数据框中选择一些列。问题是,我想使用存储在另一个框架中的成对的单词来做到这一点。更具体地说,mycounts 数据框的列名:

aa1 aa2 aa3 bb1 bb2 bb3 ff1 ff2 ff3 cc1 cc2 cc3 dd1 dd2 dd3

我想提取以分离帧以下对(mypairs):

aa bb
aa cc
bb cc
cc dd
dd ff

其中 aa 和 bb 表示要从 mycounts 中选择的列的起始模式。

我可以手动放置所需的模式,如下所示:

tmpdf <- subset(mycounts.test, select=(names(mycounts)[grep('^aa|^bb',names(mycounts))]))

用 tmpdf 做一些事情 select next pair from mypairs extract columns from mycounts 再次用 tmpdf 等做同样的事情。

但最好总是让 mypairs 强制执行输出列的模式。带“|” 在 grep 而不是得到 dd 然后 ff 列我有它 ff 然后 dd。所以我在做:

tmpdf1 <- subset(mycounts.test, select=(names(mycounts)[grep('^dd',names(mycounts))]))
tmpdf2 <- subset(mycounts.test, select=(names(mycounts)[grep('^ff',names(mycounts))]))
tmpdf <- cbind(tmpdf1, tmpdf2))

最重要的是,从 mypairs 的第一列简单地构建正则表达式是行不通的:

for (i in 1:nrow(mypairs)) { foo <- paste('^', mypairs[i,1], sep=""); print(grep(foo, mycounts)) }

这是我卡住的地方。非常感谢您的帮助。

4

1 回答 1

4

您没有names在最后一个命令中使用该函数:

代替

print(grep(foo, mycounts))

print(grep(foo, names(mycounts)))
于 2012-11-28T16:27:47.590 回答