我希望根据两个标准过滤数据框:1。几个关键变量,和2.具有特定模式的其他几个变量。
通常我使用以下代码:
mydata <- rawData[,c("scenario","period","farmID",grep("planting_*",names(rawData), value = TRUE))]
将R更新到新版本(3.5.3)后,问题就出现了。在它工作正常之前我得到了我想要的东西:一个由变量过滤的新数据框。
但是,现在R只返回一个带有变量名的向量(没有观察)。
任何人都可以帮我解决这个问题吗?
非常感谢!
此代码从未起作用:您不能在同一子集向量中混合使用名称和数字索引。
此外,你的正则表达式是错误的:*
应该是.*
- 否则你将搜索单词planting
,然后是零或更多下划线。在你的情况下,这不会有所作为,但它是一个不同的表达,因此误导你的代码的读者。
但是,您可以通过使grep
返回匹配的名称而不是索引来使其工作:
planting_names <- grep("planting_.*", names(rawData), value = TRUE)
mydata <- rawData[ , c("scenario", "period", "farmID", planting_names)]