如何重新排列R中的行和列
请帮助重新排列行和结尾 . 我有两张桌子(垫子和垫子1) 表1是垫子如何重新排列R中的行和列,r,sorting,combinations,R,Sorting,Combinations,请帮助重新排列行和结尾 . 我有两张桌子(垫子和垫子1) 表1是垫子 mat <- matrix("", 5, 7) mat[c(1),] <- sample(c("AA", "AG", "GG", "--"), 7, TRUE) mat[c(2),] <- sample(c("AA", "AT", "TT", "--"), 7, TRUE) mat[c(3),] <- sample(c("CC", "CG", "GG", "--"), 7, TRUE) mat[c(4,
mat <- matrix("", 5, 7)
mat[c(1),] <- sample(c("AA", "AG", "GG", "--"), 7, TRUE)
mat[c(2),] <- sample(c("AA", "AT", "TT", "--"), 7, TRUE)
mat[c(3),] <- sample(c("CC", "CG", "GG", "--"), 7, TRUE)
mat[c(4,5),] <- sample(c("CC", "CG", "GG", "--"), 7, TRUE)
colnames(mat)= c("Line_1", "Line_2", "Line_3", "Line_4", "Line_5", "Line_6", "Line_7")
row.names(mat)= c("Marker_1", "Marker_2", "Marker_3", "Marker_4", "Marker_5")
上述示例将有21个行组合
这里有很多R大师…请帮帮我 检查这是否有帮助:
列名的组合行
。
使用grep
查找列名中的模式
indx <- combn(colnames(mat2)[grep("Line", colnames(mat2))], 2)
indx感谢阿克鲁布!。。。你救了我一天!akrun:代码中有一个小问题,因为当两行都有'--'时,代码没有正确区分。在最后一列中,应将其归类为“Mis”,而不是“Mono”
mat2 <- cbind(mat, mat1)
Comparison Marker Linkage_Group Map_Position LineX1 LineX2 Mon/Poly
Line_1/Line_2 "Marker_1" "1" "2.3" "AA" "--" Mis
Line_1/Line_3 "Marker_1" "1" "2.3" "AA" "TT" Poly
Line_1/Line_4 "Marker_1" "1" "2.3" "AA" "TT" Poly
Line_1/Line_5 "Marker_1" "1" "2.3" "AA" "AT" Poly
Line_1/Line_6 "Marker_1" "1" "2.3" "AA" "--" Mis
Line_1/Line_7 "Marker_1" "1" "2.3" "AA" "AA" Mono
.
.
.
indx <- combn(colnames(mat2)[grep("Line", colnames(mat2))], 2)
res <- do.call(rbind, lapply(split(indx, col(indx)), function(x) {
m1 <- mat2[, c("Linkage_Group", "Map_Position", x)] ##subset mat2
#compare the concerned columns rowwise
m2 <- cbind(Comparison = paste(x, collapse = "/"), Marker = row.names(m1), m1,
`Mon/Poly` = apply(m1[, 3:4], 1, function(x) ifelse(any(grepl('--', x)), "Mis",
ifelse(x[1] == x[2], "Mono", "Poly"))))
}))
res1 <- res[order(res[,"Marker"], res[,"Linkage_Group"], res[,"Map_Position"]),]
tail(res1,3)
# Comparison Marker Linkage_Group Map_Position Line_1 Line_2
# Marker_5 "Line_5/Line_6" "Marker_5" "10" "74.8" "--" "--"
# Marker_5 "Line_5/Line_7" "Marker_5" "10" "74.8" "--" "--"
# Marker_5 "Line_6/Line_7" "Marker_5" "10" "74.8" "--" "--"
# Mon/Poly
# Marker_5 "Mis"
# Marker_5 "Mis"
# Marker_5 "Mis"