用列名和 0 行初始化一个空的 tibble
Initialize an empty tibble with column names and 0 rows
我有一个名为 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)
因为您想合并一个 tibbles 列表。您可以将 NULL 分配给变量,然后将 bind_rows
与其他小标题一起分配。
res = NULL
for(i in tibbleList)
res = bind_rows(res,i)
然而,一个更有效的方法是
bind_rows(tibbleList) # combine all tibbles in the list
my_tibble <- tibble(
var_name_1 = numeric(),
var_name_2 = numeric(),
var_name_3 = numeric(),
var_name_4 = numeric(),
var_name_5 = numeric()
)
没试过,但我想如果不是启动长度为 0 的数字向量,而是用其他 类(例如,character()
)来启动它,它也会起作用。
This SO 问题解释了如何使用其他 R 库。
根据 this tidyverse issue,这不是 tribbles 的功能。
对于仍然对使用字符向量给出的列名称创建 0 行小标题的优雅方法感兴趣的任何人 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()
这当然会导致每一列都是逻辑类型。
您可以滥用 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
我来晚了一点,但对于未来的读者:
as_tibble(matrix(nrow = 0, ncol = length(tbl_colnames)), .name_repair = ~ tbl_colnames)
.name_repair 允许您在同一函数中命名列。
以下命令将创建一个包含 0 行和变量(列)的 tibble,并以 tbl_colnames
的内容命名
tbl <- tibble::tibble(!!!tbl_colnames, .rows = 0)
我有一个名为 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)
因为您想合并一个 tibbles 列表。您可以将 NULL 分配给变量,然后将 bind_rows
与其他小标题一起分配。
res = NULL
for(i in tibbleList)
res = bind_rows(res,i)
然而,一个更有效的方法是
bind_rows(tibbleList) # combine all tibbles in the list
my_tibble <- tibble(
var_name_1 = numeric(),
var_name_2 = numeric(),
var_name_3 = numeric(),
var_name_4 = numeric(),
var_name_5 = numeric()
)
没试过,但我想如果不是启动长度为 0 的数字向量,而是用其他 类(例如,character()
)来启动它,它也会起作用。
This SO 问题解释了如何使用其他 R 库。
根据 this tidyverse issue,这不是 tribbles 的功能。
对于仍然对使用字符向量给出的列名称创建 0 行小标题的优雅方法感兴趣的任何人 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()
这当然会导致每一列都是逻辑类型。
您可以滥用 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
我来晚了一点,但对于未来的读者:
as_tibble(matrix(nrow = 0, ncol = length(tbl_colnames)), .name_repair = ~ tbl_colnames)
.name_repair 允许您在同一函数中命名列。
以下命令将创建一个包含 0 行和变量(列)的 tibble,并以 tbl_colnames
的内容命名tbl <- tibble::tibble(!!!tbl_colnames, .rows = 0)