我要比较25种不同的距离矩阵。 这里是四个:
dist.merry <- matrix(rnorm(100),10,10)
dist.pip <- matrix(runif(100),10,10)
dist.frodo <- matrix(rnorm(100),10,10)
dist.sam <- matrix(runif(100),10,10)
我将所有可能的对写入具有两行六列的字符对象中:
Cmb1 <- combn(ls(pattern="dist"), 2)
str(Cmb1)
chr [1:2, 1:6] "dist.frodo" "dist.merry" "dist.frodo" "dist.pip" "dist.frodo" "dist.sam" "dist.merry" ..
然后我执行成对的壁炉架测试并将结果保存在列表中。
library(vegan)
results <- lapply(split(Cmb1, col(Cmb1)), function(x) unlist(mantel(get(x[1]), get(x[2]), perm=999, "pearson")[3:4]))
我无法将名称写到列表对象上。
这是very old question of mine的后续活动。现在,用于重命名列表对象的部分问题似乎失败了。
问题是我如何将成对组合写入结果列表的名称?
答案 0 :(得分:1)
不确定我是否正确理解了要求,但这可以工作:
names(results) <- unlist(lapply(split(Cmb1, col(Cmb1)), toString))
它给出:
names(results)
# [1] "dist.frodo, dist.merry" "dist.frodo, dist.pip" "dist.frodo, dist.sam" "dist.merry, dist.pip"
# [5] "dist.merry, dist.sam" "dist.pip, dist.sam"
如果您希望使用其他分隔符而不是,
,则可以将paste()
与自定义collapse
参数一起使用:
names(results) <- unlist(lapply(split(Cmb1, col(Cmb1)), paste, collapse = "_"))