R中矩阵的组合元素
这是我的样本数据R中矩阵的组合元素,r,R,这是我的样本数据 > matrix a b c d W_1_N NA NA NA NA W_1_E 2 2 2 4 W_1_C 4 2 2 4 W_1_D NA NA NA NA 我必须组合矩阵中的元素以获得它们的列名对,其中一个元素是4,另一个是2,在同一行中 结果应该是这
> matrix
a b c d
W_1_N NA NA NA NA
W_1_E 2 2 2 4
W_1_C 4 2 2 4
W_1_D NA NA NA NA
我必须组合矩阵中的元素以获得它们的列名对,其中一个元素是4,另一个是2,在同一行中
结果应该是这样的
W_1_E d a
W_1_E d b
W_1_E d c
W_1_C a b
W_1_C a c
W_1_C d b
W_1_C d c
我只想要一对,其中一个元素是4,另一个元素是2,在同一行中W_1_N
和W_1_D
只有NA
W_1_E
显示在3行中,因为样本数据中的行中有3对(4,2)。W_1_C
有4对。我尝试使用循环,但不知道data.frame
中应该包含什么
for (i in row(matrix)){
for (j in col(matrixz)){
if (matrix[i,j]==4){
ram=data.frame(
)
}
}
}
非常感谢您的帮助。这里有一个想法:
library(tidyverse)
lst <- data.frame(m) %>%
rownames_to_column("rn") %>%
drop_na() %>%
gather(key, value, -rn) %>%
group_by(rn, value) %>%
summarise(l = list(unique(key))) %>%
split(.$rn)
do.call("rbind", lapply(lst, function(x) expand.grid(x$l[[1]], x$l[[2]])))
数据
m <- structure(c(NA, 2L, 4L, NA, NA, 2L, 2L, NA, NA, 2L, 2L, NA, NA,
4L, 4L, NA), .Dim = c(4L, 4L), .Dimnames = list(c("W_1_N", "W_1_E",
"W_1_C", "W_1_D"), c("a", "b", "c", "d")))
m
m <- structure(c(NA, 2L, 4L, NA, NA, 2L, 2L, NA, NA, 2L, 2L, NA, NA,
4L, 4L, NA), .Dim = c(4L, 4L), .Dimnames = list(c("W_1_N", "W_1_E",
"W_1_C", "W_1_D"), c("a", "b", "c", "d")))