我有两个不同长度的1列矩阵。两个矩阵都有共同的行名和其他每个行唯一的行名(并且可能不是相同的顺序)。如何减去两者,确保每个公共元素相互减去?例如:
> mat1
[,1]
a 1
b 2
c 3
d 4
e 5
f 6
> mat2
[,1]
x 1
a 2
y 3
b 4
> mat3
[,1]
a -1
b -2
c 3
d 4
e 5
f 6
x -1
y -3
where mat3 <- mat1 - mat2
答案 0 :(得分:4)
试试这个:
TypeError: incompatible type [object] for a datetime/timedelta operation
答案 1 :(得分:1)
我的建议是避免使用rownames。 Rownames很难管理,因为一个变量(rowname)的处理方式与其他变量不同。这违反了tidy data的原则。
我会使用library(dplyr)
将rownames转换为数据集中的变量:
mat1 <- matrix(1:6, ncol = 1, dimnames = list(letters[1:6]))
mat2 <- matrix(1:4, ncol = 1, dimnames = list(c("x", "a", "y", "b")))
数据强>
d1 <- add_rownames(data.frame(mat1), var = "name")
d2 <- add_rownames(data.frame(mat2), var = "name")
转换为data.frame并生成变量:
d <- merge(d1, d2, by = "name", all = TRUE)
d %>%
rowwise() %>%
mutate(result = sum(mat1, -mat2, na.rm = TRUE))
合并并计算结果:
{{1}}