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

标签 r dataframe

我想知道如何在 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/

相关文章:

python - Pandas - 以固定宽度格式的行将数据帧写入文件

Python panda 从另一个 df 中搜索 df 中的值

r - 如何在所有填充美学上使用 after_stat 到一个比例

r - 为什么 var 在 R 中表现得像 cov?

r - htmlwidgets 的 Shiny 加载栏

pandas - 使用 Pandas 按日期计数值的频率

python - 尝试在 jupyter 笔记本中打印数据帧时出现类型错误

r - 将一个字符串分解成不同行的多个字符串

r - 出于调试目的将 Shiny 的响应式(Reactive) df 打印到控制台 (glipse(myreactive_df)?

r - 将 MS Access 数据库连接到 R