有更清晰,更简单,更直接,更短的方式来做到这一点:
其中df1是数据帧:
names(df1[grep("Yield",names(df1))])
Run Code Online (Sandbox Code Playgroud)
我想返回任何包含单词yield的列名.
谢谢,
A5C*_*2T1 28
grep有一个value应该适用于此的论据.尝试:
grep("Yield", names(df1), value = TRUE)
Run Code Online (Sandbox Code Playgroud)
df1 <- data.frame(
Yield_1995 = 1:5,
Yield_1996 = 6:10,
Something = letters[1:5]
)
## Your current approach
names(df1[grep("Yield",names(df1))])
# [1] "Yield_1995" "Yield_1996"
## My suggestion
grep("Yield", names(df1), value=TRUE)
# [1] "Yield_1995" "Yield_1996"
Run Code Online (Sandbox Code Playgroud)
好的,所以它在简洁方面没有赢,但它确实意图的明确性:-)
为了多样化......一种"dplyr"的方法.
library(dplyr)
names(df1 %>% select(contains("Yield")))
# [1] "Yield_1995" "Yield_1996"
names(select(df1, contains("Yield")))
# [1] "Yield_1995" "Yield_1996"
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
34395 次 |
| 最近记录: |