ste*_*sou 5 r dataframe tibble
我想创建一个空数据框,其中列名来自字符向量。
例如,如果这是我的向量:
vec <- letters[1:3]
Run Code Online (Sandbox Code Playgroud)
我想创建一个空数据框,如下所示:
df <- tibble('a' = character(), 'b' = character(), 'c' = character())
Run Code Online (Sandbox Code Playgroud)
但是,我想遍历向量中的项目以填充数据框名称,而不必手动指定每个项目。实际上,我的向量有 40 多个名称。
我已经尝试了以下方法,但它们不起作用:
df <- tibble(vec[1:3])
df <- tibble(vec)
df <- tibble(for (i in 1:3){
vec[i]
})
Run Code Online (Sandbox Code Playgroud)
对此的任何帮助将不胜感激!
小智 4
您可以创建一个命名向量 ,vec其中第一个参数设置所需的列类型。该rep("", 3)行表示我想要三个字符列。那么第二个参数是列名称的向量。
用于dplyr::bind_rows将其转换为一行的 tibble。然后[0, ]选择零行,将其留空。
通过这种方法,您可以轻松控制每列的数据类型。
library(dplyr)
vec <- setNames(rep("", 3), letters[1:3])
bind_rows(vec)[0, ]
# A tibble: 0 x 3
# ... with 3 variables: a <chr>, b <chr>, c <chr>
Run Code Online (Sandbox Code Playgroud)
as_tibble如果转置命名向量,也可以使用。我想我使用是bind_rows因为我通常已经dplyr加载但没有tibble。
library(tibble)
vec <- setNames(rep("", 3), letters[1:3])
as_tibble(t(vec))[0, ]
# A tibble: 0 x 3
# ... with 3 variables: a <chr>, b <chr>, c <chr>
Run Code Online (Sandbox Code Playgroud)
如果您知道所有列都是单一类型(例如字符),您可以执行类似的操作。
vec <- letters[1:3]
df <- bind_rows(setNames(rep("", length(vec)), vec))[0, ]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3873 次 |
| 最近记录: |