我有一个名为的列名称向量tbl_colnames
。
我想用0行和length(tbl_colnames)
列创建小标题。
我发现这样做的最好方法是...
tbl <- as_tibble(data.frame(matrix(nrow=0,ncol=length(tbl_colnames)))
然后我想命名这些列,以便...
colnames(tbl) <- tbl_colnames
。
我的问题:是否有更优雅的方法?
就像是 tbl <- tibble(colnames=tbl_colnames)
Dan*_*iel 28
my_tibble <- tibble(
var_name_1 = numeric(),
var_name_2 = numeric(),
var_name_3 = numeric(),
var_name_4 = numeric(),
var_name_5 = numeric()
)
Run Code Online (Sandbox Code Playgroud)
还没有尝试过,但我想如果不是启动长度为 0 的数字向量,而是使用其他类(例如,字符()),它也可以工作。
这个SO question 解释了如何使用其他 R 库来做到这一点。
根据this tidyverse issue,这不会是tribbles的功能。
Nik*_*Nik 13
对于仍然对使用字符向量给出列名的优雅方式创建 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()
当然,这会导致每一列都是逻辑类型。
小智 12
由于要合并小标题列表。您可以仅将NULL分配给变量,然后bind_rows
再分配其他标记。
res = NULL
for(i in tibbleList)
res = bind_rows(res,i)
Run Code Online (Sandbox Code Playgroud)
但是,一种有效的方法是
bind_rows(tibbleList) # combine all tibbles in the list
Run Code Online (Sandbox Code Playgroud)
R M*_*ore 10
以下命令将创建一个包含 0 行和以 tbl_colnames 的内容命名的变量(列)的 tibble
tbl <- tibble::tibble(!!!tbl_colnames, .rows = 0, .name_repair = ~ tbl_colnames)
Run Code Online (Sandbox Code Playgroud)
小智 8
我来晚了一点,但对于未来的读者:
as_tibble(matrix(nrow = 0, ncol = length(tbl_colnames)), .name_repair = ~ tbl_colnames)
Run Code Online (Sandbox Code Playgroud)
.name_repair 允许您在同一函数中命名列。
您可以滥用readr::read_csv
,它允许从字符串中读取。您可以控制名称和类型,例如:
tbl_colnames <- c("one", "two", "three", "c4", "c5", "last")
read_csv("\n", col_names = tbl_colnames) # all character type
read_csv("\n", col_names = tbl_colnames, col_types = "lcniDT") # various types
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
9939 次 |
最近记录: |