【发布时间】:2021-03-24 08:09:06
【问题描述】:
我正在尝试提取以某些字符串开头的多个变量。对于这个例子,我想编写一个代码来提取所有以 X1 和 Y2 开头的变量。
set.seed(123)
df <- data.frame(X1_1=sample(1:5,10,TRUE),
X1_2=sample(1:5,10,TRUE),
X2_1=sample(1:5,10,TRUE),
X2_2=sample(1:5,10,TRUE),
Y1_1=sample(1:5,10,TRUE),
Y1_2=sample(1:5,10,TRUE),
Y2_1=sample(1:5,10,TRUE),
Y2_2=sample(1:5,10,TRUE))
我知道我可以使用以下方法提取以“X1”开头的变量
Vars_to_extract <- c("X1")
tempdf <- df[ , grep( paste0(Vars_to_extract,".*" ) , names(df), value=TRUE)]
X1_1 X1_2
1 3 5
2 3 4
3 2 1
4 2 2
5 3 3
但是我需要修改上面的代码来提取变量多个变量类型,如果这样指定的话
Vars_to_extract
我一直在尝试在 grep 部分中使用 %in% 和 .*,但收效甚微。我知道我可以编写以下非常手动的代码,分别合并每组变量。
tempdf <- data.frame(df[, grep("X1.*", names(df), value=TRUE)] , df[, grep("Y2.*", names(df), value=TRUE)] )
X1_1 X1_2 Y2_1 Y2_2
1 3 5 1 5
2 3 4 1 5
3 2 1 2 3
4 2 2 3 1
5 3 3 4 2
但是,在现实世界的情况下,我经常处理大量变量,并且必须多次这样做。是否可以使用 %in% 以这种方式编写它,还是需要使用循环?任何帮助或提示将不胜感激。谢谢
【问题讨论】:
标签: r