将data.frame的列转换为命名向量

时间:2019-12-09 21:56:24

标签: r

我有一个data.frame,其中有一列,其属性如下所示:

$ variable  : Named num  0.887 0.886 0.887 0.887 0.887 ...
..- attr(*, "names")= chr  "2010-01-04 00:00" "2010-01-04 00:01" "2010-01-04"

我试图在另一个data.frame中回复这种格式,但是我无法将变量命名为num,我尝试了这种方法:

vec = rnorm(10)
names(vec) = letters[1:10]
dd = data.frame(a = vec)
str(dd)

还有这个:

dd = data.frame(a = rnorm(10))
dd$a = setNames(dd$a, letters[1:10])
str(dd)

两者都返回:

'data.frame':   10 obs. of  1 variable:
 $ a: num  1.623 -0.178 0.988 -0.406 -0.554 ...

有人知道如何将列转换为命名数字吗?

谢谢

1 个答案:

答案 0 :(得分:1)

这是我能想到的。

首先创建矢量,然后dput将其执行到structure指令中,以创建数据帧。

set.seed(1234)
vec <- rnorm(10)
names(vec) <- letters[1:10]

n <- length(vec)
dd <- structure(list(a = dput(vec)), 
                class = "data.frame", row.names = c(NA, n))
str(dd)
#'data.frame':  10 obs. of  1 variable:
# $ a: Named num  -1.207 0.277 1.084 -2.346 0.429 ...
#  ..- attr(*, "names")= chr  "a" "b" "c" "d" ...