我希望基于两个条件来过滤数据帧:1.几个关键变量,以及2.具有特定模式的其他几个变量。
通常我使用以下代码:
mydata <- rawData[,c("scenario","period","farmID",grep("planting_*",names(rawData), value = TRUE))]
我将R更新到新版本(3.5.3)后,出现了问题。在工作正常之前,我得到了我想要的:一个由变量过滤的新数据框。
但是,现在R仅返回带有变量名的向量(没有观察到)。
有人可以帮我解决这个问题吗?
非常感谢!
答案 0 :(得分:0)
此代码永远无效:您不能在同一子集向量中混用名称和数字索引。
此外,您的正则表达式是错误的:*
应该为.*
—否则,您将搜索单词planting
,后跟零个或多个下划线。对于您而言,这没有什么不同,但它是不同的表达方式,因此会误导您的代码读者。
但是,您可以通过使grep
返回匹配的名称而不是索引来使它工作:
planting_names <- grep("planting_.*", names(rawData), value = TRUE)
mydata <- rawData[ , c("scenario", "period", "farmID", planting_names)]