【发布时间】:2020-08-08 12:21:17
【问题描述】:
我是一个试图比较两个矩阵的编程新手。如果 mat1 中第一列中的元素与 mat2 中第一列中的任何元素匹配,那么我希望 mat1 中的匹配元素被替换为 mat2 中匹配的邻居(同一行不同列)。
输入:
mat1<-matrix(letters[1:5])
mat2<-cbind(letters[4:8],1:5)
> mat1
[,1]
[1,] "a"
[2,] "b"
[3,] "c"
[4,] "d"
[5,] "e"
> mat2
[,1] [,2]
[1,] "d" "1"
[2,] "e" "2"
[3,] "f" "3"
[4,] "g" "4"
[5,] "h" "5"
希望的输出:
> mat3
[,1]
[1,] "a"
[2,] "b"
[3,] "c"
[4,] "1"
[5,] "2"
我尝试了以下操作但没有成功:
> for(x in mat1){mat3<-ifelse(x==mat2,mat2[which(x==mat2),2],mat1)}
> mat3
[,1] [,2]
[1,] "a" "a"
[2,] "2" "b"
[3,] "c" "c"
[4,] "d" "d"
[5,] "e" "e"
任何建议将不胜感激。花了一整天没有让它工作。如果元素在矩阵或数据框中,对我来说并不重要。
谢谢。
【问题讨论】: