如何将不同长度的命名向量合并为按同名元素求和的data frame
R语言实现多个命名向量同名元素求和
- 以下方案支持任意数量、长度不一的命名向量,自动匹配同名元素完成求和,最终输出为data frame格式
首先构造示例向量(你实际使用时可以替换为自己的向量对象):
# 示例向量1 vec1 <- c(adjust = 4, balance = 9, drive = 16, idle = 82, other = 4, pick = 350, putdown = 61, replace = 16, sort = 26, wait = 18, walk = 14) # 示例向量2 vec2 <- c(adjust = 1, balance = 42, drive = 14, idle = 47, pick = 385, putdown = 118, replace = 4, sort = 83, unload = 19, walk = 7)
核心实现代码
# 1. 将所有需要处理的向量存入列表,有多少个就加多少个 vec_list <- list(vec1, vec2) # 2. 合并所有向量数据并按元素名称分组求和 stacked_data <- stack(vec_list) sum_result <- tapply(stacked_data$values, stacked_data$ind, sum) # 3. 转换为data frame格式 result_df <- as.data.frame(t(sum_result))
可选补充:仅保留所有向量共有的字段
如果不需要只在部分向量中出现的字段,可以增加以下过滤步骤:
# 提取所有向量共有的元素名称 common_names <- Reduce(intersect, lapply(vec_list, names)) # 过滤结果,仅保留共有字段 result_df <- result_df[, common_names]
输出示例
执行后打印result_df即可得到求和结果:
adjust balance drive idle pick putdown replace sort walk 1 5 51 30 129 735 179 20 109 21
内容的提问来源于stack exchange,提问作者Javush
相关产品推荐
相关产品推荐

