我有一个名为tbl_colnames
的列名向量。
我想创建一个0行length(tbl_colnames)
列的tibble。
我发现最好的办法就是...tbl <- as_tibble(data.frame(matrix(nrow=0,ncol=length(tbl_colnames)))
然后我想给这些列命名colnames(tbl) <- tbl_colnames
。
我的问题是:有没有更优雅的方式来做这件事?
类似于tbl <- tibble(colnames=tbl_colnames)
6条答案
按热度按时间wrrgggsh1#
我还没有尝试过,但我想如果你不初始化长度为0的数字向量,而是使用其他类(例如,
character()
),它也会工作。This SO问题解释了如何使用其他R库进行此操作。
根据this tidyverse的问题,这将不会是一个功能的tribbles。
42fyovps2#
既然你想合并一个tibles列表。您可以只将NULL赋给变量,然后将
bind_rows
赋给其他tibble。然而,一种更有效的方法是
jtoj6r0c3#
对于任何仍然对创建0行tibble的优雅方式感兴趣的人,其列名由字符向量
tbl_colnames
给出:tbl_colnames %>% purrr::map_dfc(setNames, object = list(logical()))
或:
tbl_colnames %>% purrr::map_dfc(~tibble::tibble(!!.x := logical()))
或:
tbl_colnames %>% rlang::rep_named(list(logical())) %>% tibble::as_tibble()
当然,这会导致每一列都是逻辑类型的。
q35jwt9p4#
下面的命令将创建一个行为0、变量(列)以tbl_colnames的内容命名的tibble
q8l4jmvw5#
你可以滥用
readr::read_csv
,它允许从字符串中读取。您可以控制名称和类型,例如:gblwokeq6#
我有点迟到了,但对于未来的读者:
.name_repair允许您在同一函数中命名列。