我想知道如何在 BASE R 中实现下面我想要的输出
?
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
的子字符串进行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(input, ncol = 2, dimnames = list(NULL,
unique(substring(names(input), 1, 1))))
关于r - 将命名向量转换为 data.frame R,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61646047/