过滤R中的数据框:将GREP与变量名结合起来?

问题描述 投票:0回答:1

我希望根据两个标准过滤数据框:1。几个关键变量,和2.具有特定模式的其他几个变量。

通常我使用以下代码:

mydata <- rawData[,c("scenario","period","farmID",grep("planting_*",names(rawData), value = TRUE))]

将R更新到新版本(3.5.3)后,问题就出现了。在它工作正常之前我得到了我想要的东西:一个由变量过滤的新数据框。

但是,现在R只返回一个带有变量名的向量(没有观察)。

任何人都可以帮我解决这个问题吗?

非常感谢!

r
1个回答
0
投票

此代码从未起作用:您不能在同一子集向量中混合使用名称和数字索引。

此外,你的正则表达式是错误的:*应该是.* - 否则你将搜索单词planting,然后是零或更多下划线。在你的情况下,这不会有所作为,但它是一个不同的表达,因此误导你的代码的读者。

但是,您可以通过使grep返回匹配的名称而不是索引来使其工作:

planting_names <- grep("planting_.*", names(rawData), value = TRUE)
mydata <- rawData[ , c("scenario", "period", "farmID", planting_names)]
© www.soinside.com 2019 - 2024. All rights reserved.