read_sas cols_only supress error Evaluation error: Column 2 must be named
read_sas cols_only supress error Evaluation error: Column 2 must be named
我有一长串非常大的 SAS 文件。我想使用 read_sas 导入它们。为了提高速度并减少内存使用,我只想导入我感兴趣的列使用 cols_only。
问题是,我有一长串可能的列名 - 但并非每一列都在我的数据集中。如果我将完整列表传递给 cols_only,我会得到错误:
Evaluation error: Column 2 must be named.
有没有办法抑制这个错误,并鼓励 read_sas 尽最大努力从我传递的列表中导入任何变量?
正如@Andrew 在他们的评论中提到的那样,使用 haven >= 2.2.0,您可以为此使用新的 col_select
参数。对于可能不存在的 select 列,使用助手 one_of()
:
library(haven)
library(tidyselect)
f <- tempfile()
write_sas(mtcars, f)
my_cols <- c("mpg", "i-don't-exist")
read_sas(f, col_select = one_of(my_cols))
#> Warning: Unknown columns: `i-don't-exist`
#> # A tibble: 32 x 1
#> mpg
#> <dbl>
#> 1 21
#> 2 21
#> 3 22.8
#> 4 21.4
#> 5 18.7
#> 6 18.1
#> 7 14.3
#> 8 24.4
#> 9 22.8
#> 10 19.2
#> # ... with 22 more rows
我有一长串非常大的 SAS 文件。我想使用 read_sas 导入它们。为了提高速度并减少内存使用,我只想导入我感兴趣的列使用 cols_only。
问题是,我有一长串可能的列名 - 但并非每一列都在我的数据集中。如果我将完整列表传递给 cols_only,我会得到错误:
Evaluation error: Column 2 must be named.
有没有办法抑制这个错误,并鼓励 read_sas 尽最大努力从我传递的列表中导入任何变量?
正如@Andrew 在他们的评论中提到的那样,使用 haven >= 2.2.0,您可以为此使用新的 col_select
参数。对于可能不存在的 select 列,使用助手 one_of()
:
library(haven)
library(tidyselect)
f <- tempfile()
write_sas(mtcars, f)
my_cols <- c("mpg", "i-don't-exist")
read_sas(f, col_select = one_of(my_cols))
#> Warning: Unknown columns: `i-don't-exist`
#> # A tibble: 32 x 1
#> mpg
#> <dbl>
#> 1 21
#> 2 21
#> 3 22.8
#> 4 21.4
#> 5 18.7
#> 6 18.1
#> 7 14.3
#> 8 24.4
#> 9 22.8
#> 10 19.2
#> # ... with 22 more rows