尝试像这样创建一个 data.frame :
a = "foo"
bar = data.frame(a = 1:3)
但列的名称是a
,而不是foo
:
> bar
a
1 1
2 2
3 3
创建data.frame后可以重命名该列,但是如何在同一个data.frame命令中通过变量轻松地为其分配名称?
该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
我不认为你可以在这里做你想做的事情,因为 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
尝试:
a = structure(data.frame(1:3), names="foo")
> a
foo
1 1
2 2
3 3
使用链接对Daniel Gerlanc 的答案进行了轻微修改
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