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