Select 使用 dplyr 和 select_() 的数据框中的列列表
Select list of columns from a data frame using dplyr and select_()
我正在尝试使用以下函数从数据框中提取一些列:
library('dplyr')
desired_columns = c(
'a',
'b',
'c')
extract_columns <- function(data) {
extracted_data <- data %>%
select_(desired_columns)
return(extracted_data)
}
但是当我尝试时,我没有得到我期望的结果:
> df <- data.frame(a=1:5, b=1:5, c=1:5, d=1:5)
> df
a b c d
1 1 1 1 1
2 2 2 2 2
3 3 3 3 3
4 4 4 4 4
5 5 5 5 5
> extract_columns(df)
a
1 1
2 2
3 3
4 4
5 5
我似乎只得到第一列,但我不知道自己做错了什么。我怎样才能获得所有请求的列?
您只是缺少 select_
中的 .dots
参数:
extract_columns <- function(data) {
extracted_data <- data %>%
select_(.dots = desired_columns)
return(extracted_data)
}
extract_columns(df)
a b c
1 1 1 1
2 2 2 2
3 3 3 3
4 4 4 4
5 5 5 5
在这种情况下,您必须使用 .dots 参数来传递向量(或列表):
select_(.dots = desired_columns)
看来跟懒惰有点关系。
tibble 是数据帧的 tidyverse/dplyr 版本。由于 select() 是一个 dplyr 函数,您可以将数据帧转换为一个 tibble,并直接将 select 与变量列表一起使用到 return 另一个 tibble。
df = data.frame(a=1:5, b=1:5, c=1:5, d=1:5)
desired_columns = c( 'a', 'b', 'c')
df %>% as_tibble() %>% select(desired_columns)
我正在尝试使用以下函数从数据框中提取一些列:
library('dplyr')
desired_columns = c(
'a',
'b',
'c')
extract_columns <- function(data) {
extracted_data <- data %>%
select_(desired_columns)
return(extracted_data)
}
但是当我尝试时,我没有得到我期望的结果:
> df <- data.frame(a=1:5, b=1:5, c=1:5, d=1:5)
> df
a b c d
1 1 1 1 1
2 2 2 2 2
3 3 3 3 3
4 4 4 4 4
5 5 5 5 5
> extract_columns(df)
a
1 1
2 2
3 3
4 4
5 5
我似乎只得到第一列,但我不知道自己做错了什么。我怎样才能获得所有请求的列?
您只是缺少 select_
中的 .dots
参数:
extract_columns <- function(data) {
extracted_data <- data %>%
select_(.dots = desired_columns)
return(extracted_data)
}
extract_columns(df)
a b c
1 1 1 1
2 2 2 2
3 3 3 3
4 4 4 4
5 5 5 5
在这种情况下,您必须使用 .dots 参数来传递向量(或列表):
select_(.dots = desired_columns)
看来跟懒惰有点关系。
tibble 是数据帧的 tidyverse/dplyr 版本。由于 select() 是一个 dplyr 函数,您可以将数据帧转换为一个 tibble,并直接将 select 与变量列表一起使用到 return 另一个 tibble。
df = data.frame(a=1:5, b=1:5, c=1:5, d=1:5)
desired_columns = c( 'a', 'b', 'c')
df %>% as_tibble() %>% select(desired_columns)