我有两个不同大小的矩阵,带有'NA'值,想要找出常用术语之间的相关性。例如如果,
d1 =
[x] [y] [z]
a 1 6 11
b 2 NA 12
c 3 8 13
d 4 9 14
p+q 5 10 15
d2 =
[t] [u] [v] [x] [y]
p+a 20 16 12 8 4
b 19 15 11 7 3
c 18 14 10 6 2
a 17 13 9 5 1
行名也可能有一些特殊字符(例如+)。我想将两个矩阵子集化,使它们只有公共行和列,没有NA,例如,
d1 <-
[x] [y]
[a] 1 6
[c] 3 8
d2 <-
[x] [y]
[a] 5 1
[c] 6 2
我可以执行cor(d1,d2)。我对使用use
的{{1}}或na.rm
选项不感兴趣
实际上,真实数据是行和列的数据。我累了cor
和complete.cases
来查找并删除NA。然后我尝试is.na
来过滤行和列,但我得到NA或NaN作为最终答案。
我真的很感谢你的帮助。感谢。
答案 0 :(得分:1)
你可以尝试:
r1 <- intersect(rownames(d1), rownames(d2))
c1 <- intersect(colnames(d1), colnames(d2))
indx1 <- !!rowSums(is.na(d1))
r2 <- r1[!r1 %in% names(indx1)[indx1]]
d1[r2,c1]
# x y
#a 1 6
#c 3 8
d2[r2,c1]
x y
# a 5 1
# c 6 2