【问题标题】:How can I make a tibble/tbl_df/data_frame from a vector or vectors如何从一个或多个向量制作一个 tibble/tbl_df/data_frame
【发布时间】:2016-08-11 15:21:33
【问题描述】:

我有一个名字和一个向量

my.name <- 'data.values'
my.vec <- 1:5

我想制作一个 tibble/tbl_df/data_frame,其中有一列以 my.name 作为该列的名称,my.vec 作为值。我有的是

df <- data_frame(placeholder = rep(NA, length(my.vec)))
df[[my.name]] <- my.vec
df[['placeholder']] <- NULL

这只是感觉很愚蠢。有没有更简单的方法来做到这一点?

我也对我有多个向量和多个名称的情况感兴趣,例如

my.name1 <- 'data.values.day1'
my.name2 <- 'data.values.day2'
my.vec1 <- 1:5
my.vec2 <- 2:6
...

【问题讨论】:

  • @user5249203 my.name 不会被评估,所以你最终会得到一个 data.frame 和一个名为 my.name 的列。
  • 使用命名列表,as_data_frame(setNames(list(my.vec), my.name))
  • 或重命名data_frame(my.vec) %&gt;% rename(my.name = my.vec)

标签: r dplyr


【解决方案1】:

我认为最好的答案来自评论。

DirtySockSniffer 推荐:

as_data_frame(setNames(list(my.vec), my.name)))

很好地概括了多列情况

as_data_frame(setNames(list(my.vec1, my.vec2), 
                       c(my.name1, my.name2)))

【讨论】:

    【解决方案2】:

    您可以先创建data_frame,然后设置其列名:

    my.data <- data_frame(my.vec.1, my.vec.2, ...)
    names(my.data) <- c(my.name.1, my.name.2, ...) # Order is important here
    

    【讨论】:

      猜你喜欢
      • 2018-05-21
      • 2016-06-07
      • 1970-01-01
      • 2015-07-03
      • 2018-06-23
      • 1970-01-01
      • 2019-05-03
      • 2020-03-09
      • 2021-06-02
      相关资源
      最近更新 更多