【发布时间】:2019-10-08 06:36:58
【问题描述】:
我有一个非常大的数据集,其中包含多个列,它们的名称有共同部分(例如 ctq_1、ctq_2、ctq_3 以及 panas_1、panas_2、panas_3)。我想将其中一些列(例如,仅列名中包含“panas”的列)与同一数据框中具有唯一名称(例如,id、组)的某些其他列一起子集。
我尝试在方括号内使用 grep 函数,效果很好:
panas .data 中找不到列 114、115、116、117、118、……(以及更多 15 个)。
致电rlang::last_error() 以查看回溯。
如何用最简单的代码实现我想要的?我是 R 新手,所以最好避免使用花哨的功能!
这是一个可重现的例子。
> head(iris)
Sepal.Length Sepal.Width Petal.Length Petal.Width Species
1 5.1 3.5 1.4 0.2 setosa
2 4.9 3.0 1.4 0.2 setosa
3 4.7 3.2 1.3 0.2 setosa
4 4.6 3.1 1.5 0.2 setosa
5 5.0 3.6 1.4 0.2 setosa
6 5.4 3.9 1.7 0.4 setosa
> newframe <- iris[ , grep('Petal', colnames(iris))] # This works
> newframe <- iris[ , c('Species', grep('Petal', colnames(iris)))] # This doesn't work
这一次,错误是:
[.data.frame(iris, , c("Species", grep("Petal", colnames(iris)))) 中的错误: 选择了未定义的列
【问题讨论】:
-
尝试在您的
grep中使用|。像iris[grep("Spec.*|Peta.*", names(iris))]这样的东西?也可以玩弄一些pasteing..
标签: r dataframe match subset partial