从字符中获取cbind中的新data.frame列名称

时间:2018-01-18 16:36:17

标签: r dataframe

我正在尝试从函数中由data.frame自动生成的字符中分配“R列名称”。我知道我之后可以用colnames()更新列名,但我觉得我应该知道如何直接进行。

示例:

test <- iris[1:3, 1:2]
i <- 3
hat_char <- paste0("hat", i) 
x <- cbind(test, hat_char = 3:1)
x
  Sepal.Length Sepal.Width hat_char
1          5.1         3.5        3
2          4.9         3.0        2
3          4.7         3.2        1

Hoped-for output

  Sepal.Length Sepal.Width hat3
1          5.1         3.5    3
2          4.9         3.0    2
3          4.7         3.2    1

由于存在大量相关但不同且更基本的问题,这似乎很难找到。

修改 忘了提,但强烈希望base R解决方案。

1 个答案:

答案 0 :(得分:1)

使用setNames

中的base R
cbind(test, setNames(list(3:1), hat_char))
#    Sepal.Length Sepal.Width hat3
#1          5.1         3.5    3
#2          4.9         3.0    2
#3          4.7         3.2    1

如果我们将其分配给同一数据集

test[hat_char] <- 3:1

如果我们使用dplyr

library(dplyr)
test %>%
  mutate(!! hat_char := 3:1)
#    Sepal.Length Sepal.Width hat3
#1          5.1         3.5    3
#2          4.9         3.0    2
#3          4.7         3.2    1