[英]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.frame
, reshape
也可以自动处理此问题。 它还将_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.