通过列名中的参数使用 dplyr 选择
Selecting with dplyr by parameters in column names
我的数据 table 中有很多列如下所示:
sd1_scale1 sd1_scale2 sd1_scale3 ... sd2_scale1 sd2_scale2 ... so on
我用 dplyr 操作这些数据并以这种方式使用 select:
select(code_group, sd1_scale1:sd1_scale13)
我想写一个函数,它接受数字(sd 数字)和 selects 列,看起来像这样:
makeData <- function(sdNumber) {
return select(code_group, sd{sdNumber}_scale1:sd{sdNumber}_scale13)
}
dplyr可以吗?我没有传递到列的 select 索引,所以我不知道该怎么做。提前致谢!
您可以按照 Gregor 的建议使用 select_
,但您不必这样做。
library(dplyr)
x <- read.csv(text = "sd1_scale1,sd1_scale2,sd1_scale3,sd2_scale1,sd2_scale2,sd2_scale3
1,2,3,4", header = TRUE)
makeData1 <- function(x, sdNumber) {
# Using `one_of` as explained in ?select
select(x, one_of(paste0("sd", sdNumber, "_scale", 1:2)))
}
makeData2 <- function(x, sdNumber) {
# Same effect using nonstandard evaluation, see vignette("nse")
select_(x, .dots = paste0("sd", sdNumber, "_scale", 1:2))
}
x %>% makeData1(2)
x %>% makeData2(2) # same result
我从 this gist
那里得到了这个
我的数据 table 中有很多列如下所示:
sd1_scale1 sd1_scale2 sd1_scale3 ... sd2_scale1 sd2_scale2 ... so on
我用 dplyr 操作这些数据并以这种方式使用 select:
select(code_group, sd1_scale1:sd1_scale13)
我想写一个函数,它接受数字(sd 数字)和 selects 列,看起来像这样:
makeData <- function(sdNumber) {
return select(code_group, sd{sdNumber}_scale1:sd{sdNumber}_scale13)
}
dplyr可以吗?我没有传递到列的 select 索引,所以我不知道该怎么做。提前致谢!
您可以按照 Gregor 的建议使用 select_
,但您不必这样做。
library(dplyr)
x <- read.csv(text = "sd1_scale1,sd1_scale2,sd1_scale3,sd2_scale1,sd2_scale2,sd2_scale3
1,2,3,4", header = TRUE)
makeData1 <- function(x, sdNumber) {
# Using `one_of` as explained in ?select
select(x, one_of(paste0("sd", sdNumber, "_scale", 1:2)))
}
makeData2 <- function(x, sdNumber) {
# Same effect using nonstandard evaluation, see vignette("nse")
select_(x, .dots = paste0("sd", sdNumber, "_scale", 1:2))
}
x %>% makeData1(2)
x %>% makeData2(2) # same result
我从 this gist
那里得到了这个