【问题标题】:Tell R to use string stored in object as column name告诉 R 使用存储在对象中的字符串作为列名
【发布时间】:2019-11-27 22:40:12
【问题描述】:

我正在尝试以下方法:

a <- "b"
data.frame (a = c (1:3))

返回(当然):

data.frame (a = c (1:3))
>   a
> 1 1
> 2 2
> 3 3

我想要的是:

a <- "b"    
data.frame (foo (a) = c (1:3))
>   b
> 1 1
> 2 2
> 3 3

有没有办法告诉 R 使用存储在对象 (a) 中的字符串 ("b") 作为列名?

编辑:我知道我的问题的标题可能不是很有意义。有没有改进的建议?

【问题讨论】:

  • df &lt;- data.frame (a = c (1:3)); names(df) &lt;- a
  • 也是一个优雅的解决方案!

标签: r string dataframe


【解决方案1】:

一个选项是tibble 并评估 (!!) := 的 lhs 上的对象

tibble(!! a := 1:3)
# A tibble: 3 x 1
#      b
#  <int>
#1     1
#2     2
#3     3

我们也可以从dplyr使用set_names

library(dplyr)
data.frame(1:3) %>%
     set_names(a)

【讨论】:

    【解决方案2】:

    你也可以使用setNames

    setNames(data.frame(1:3), a)
    
    #  b
    #1 1
    #2 2
    #3 3
    

    或使用matrix 并添加dimnames

    data.frame(matrix(1:3, ncol = 1, dimnames = list(NULL, a)))
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-09-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多