繁体   English   中英

将命名向量转换为 data.frame R

[英]Transform a named vector to a data.frame R

我想知道如何在 BASE output中实现我想要的 output?

input <- c(a_1 = 2, a_2 = 3, b_1 = 1, b_2 = 0)

output <- data.frame(a = 2:3, b = 1:0)

我们可以根据'input' names的substring进行split并转换为data.frame

data.frame(split(unname(input), sub("_\\d+$", "", names(input))))
#  a b
#1 2 1
#2 3 0

或使用unstack

nm1 <- sub('_\\d+$', '', names(input))
unstack(input ~ nm1, data.frame(input, nm1))

或者,如果“a”、“b”长度相等,则另一种选择是matrix构造

matrix(input, ncol = 2,  dimnames = list(NULL, 
        unique(substring(names(input), 1, 1))))

如果您将矢量data.framereshape也可以自动处理此问题。 它还将_x部分与 output 中的time变量分开,只要变量名称始终采用name_x模式。

reshape(data.frame(t(input)), varying=TRUE, sep="_", direction="long")
#    time a b id
#1.1    1 2 1  1
#1.2    2 3 0  1

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM