我正在尝试将 Tibble 转换为函数调用的参数列表。我这样做的原因是因为我想创建一个简单的文件规范 Tibble 来读取具有不同列的多个固定宽度文件。这样,我只需要使用 pull 和 select 指定文件中的列,然后我就可以自动加载和解析文件。但是,我在使用 cols 对象来指定列格式时遇到了问题。
对于这个例子,假设我有一个格式的 Tibble:
> (filespec <- tibble(ID = c("Title", "Date", "ATTR"), Length = c(23, 8, 6), Type = c("col_character()", "col_date()", "col_factor(levels=c(123456,654321)")))
# A tibble: 3 x 3
ID Length Type
<chr> <dbl> <chr>
1 Title 23 col_character()
2 Date 8 col_date()
3 ATTR 6 col_factor(levels=c(123456,654321)
我想得到一个 cols 格式的对象:
> (cols(Title = col_character(), Date = col_date(), ATTR=col_factor(levels=c(123456,654321))))
cols(
Title = col_character(),
Date = col_date(format = ""),
ATTR = col_factor(levels = c(123456, 654321), ordered = FALSE)
)
从我读过的其他问题中,我知道这可以通过 do.call 来完成。但我不知道如何以自动方式将列 ID 和 Type 转换为 cols 对象。这是我尝试过的一个例子......
> do.call(cols, select(filespec,ID, Type))
Error in switch(x, `_` = , `-` = col_skip(), `?` = col_guess(), c = col_character(), :
EXPR must be a length 1 vector
我假设选择需要用另一个执行行到参数映射的函数包装,这是如何完成的?