有一个名为Newick1
,Newick2
,Newick3
等100个phlyo对象的列表。我想在树之间进行成对比较(例如all.equal.phylo(Newick1, Newick2)
)但由于每个文件都有不同的名称,因此很难确定如何有效地执行此操作。
我认为下面的for循环之类的东西会起作用,但是如何为循环的每次迭代指定一个不同的文件?出于显而易见的原因,我在下面的代码中输入的[i]和[j]不起作用,但我不知道如何替换它们。
非常感谢!
for (i in 1:99) {
for (j in i+1:100) {
all.equal.phylo(Newick[i], Newick[j]) -> output[i,j]
} }
答案 0 :(得分:0)
您可以尝试以下变体:
# make a two column dataframe
# and filter the identical values
df <- expand.grid(1:100,1:100)
names(df) <- c('i','j')
df <- df[!df$i == df$j,]
# example function that takes two parameters
addtwo <- function(i,j){i + j}
# apply that function across rows of the dataframe
results <- mapply(addtwo, df$i, df$j)
# using the same logic,
# your function would look something like this
getdistance <- function(i,j, newicks=NEWICKS) {
all.equal.phylo(newicks[i], newicks[j])
}
# and apply it like this
results <- mapply(getdistance, df$i, df$j)
关键概念:
答案 1 :(得分:-1)
尝试mget()
按名称引用多个对象
> x1 <- x2 <- x3 <-1
> mget(paste0("x",1:3))
$x1
[1] 1
$x2
[1] 1
$x3
[1] 1