尝试创建这样的data.frame:
a = "foo"
bar = data.frame(a = 1:3)
但该列的名称为a
,而不是foo
:
> bar
a
1 1
2 2
3 3
创建data.frame后可以重命名该列,但是如何通过同一个data.frame命令中的变量轻松分配它的名称?
答案 0 :(得分:9)
setNames()
函数应该适合您:
a <- "Numbers"
b <- "Letters"
bar <- setNames(data.frame(1:3, letters[1:3]), c(a, b))
bar
# Numbers Letters
# 1 1 a
# 2 2 b
# 3 3 c
答案 1 :(得分:5)
由于R解释你提供的参数名称的方式,我认为你不能做你想做的事。实际上,您希望get(a) = 1:3
希望R将存储为a
的对象的值而不是标签a
本身,但此处不允许使用该习惯用法。
我会这样做:
> a <- "foo"
> bar <- data.frame(1:3)
> names(bar) <- a
>
> bar
foo
1 1
2 2
3 3
答案 2 :(得分:2)
尝试:
a = structure(data.frame(1:3), names="foo")
> a
foo
1 1
2 2
3 3
答案 3 :(得分:0)
使用链接轻微修改Daniel Gerlanc's answer
a <- "foo"
a <- data.frame(1:3) %>% structure(names = c(a))
foo
1 1
2 2
3 3
当您从其他数据类型创建数据框时,链接非常有用,例如动物园系列
a <- c("foo","data")
bar
2016-01-01 2016-01-02 2016-01-03 2016-01-04 2016-01-05
0.78 0.46 0.82 1.07 1.04
a <- bar %>% as.data.frame() %>% tibble::rownames_to_column() %>% structure(names=a)
foo data
1 2016-01-01 0.78
2 2016-01-02 0.46
3 2016-01-03 0.82
4 2016-01-04 1.07
5 2016-01-05 1.04