我有一些不同的命名向量,我想把它们组合成一个日期框架,把所有的动作加起来。
adjust balance drive idle other pick putdown replace sort wait
4 9 16 82 4 350 61 16 26 18
walk
14
adjust balance drive idle pick putdown replace sort unload walk
1 42 14 47 385 118 4 83 19 7
我希望它是这样的:
adjust balance drive
5 51 30
等. .
我发现这很有挑战性,因为它们是命名向量非常感谢您的帮助,谢谢!
我们可以像下面这样使用aggregate
+stack
aggregate(. ~ ind, rbind(stack(vec1), stack(vec2)), sum)
您可以转换为data.frame
并使用dplyr
包按名称分组并将数字相加。
library(dplyr)
vec <- c(4, 9, 16, 1, 42, 14)
names(vec) <- c("adjust", "balance", "drive", "adjust", "balance", "drive")
data.frame(values = vec, name = names(vec)) %>% group_by(name) %>% summarise(values = sum(values))
如果要将两个向量之间匹配的所有元素相加:
# Resolve the matching names of the vectors:
# vec_nm_order => character vector
vec_nm_order <- intersect(
names(vec1),
names(vec2)
)
# Add the related scalars together:
# named integer vector => stdout(console)
vec1[vec_nm_order] + vec2[vec_nm_order]
如果我们只想添加调整,平衡,驱动的值:
# Choose the names (keys) of elements we want to add together:
# vec_nm_order => character vector
vec_nm_order <- c(
"adjust", "balance", "drive"
)
# Add the related scalars together:
# named integer vector => stdout(console)
vec1[vec_nm_order] + vec2[vec_nm_order]