【问题标题】:Applying a distance matrix to multiple data frames将距离矩阵应用于多个数据帧
【发布时间】:2020-06-16 22:59:46
【问题描述】:

我有 20 个不同长度的数据框,但列数都相同。我想对这些数据帧中的每一个进行一些分析,在这种情况下是使用纯素的距离矩阵。我四处搜寻,只是发现我在某处遗漏了一步。

虚拟数据使用 5 df,我一直在尝试使用 lapply。

df1<- matrix(data = c(1:100), nrow = 10, ncol = 10)
df2<- matrix(data = c(1:150), nrow = 15, ncol = 10)
df3<- matrix(data = c(1:50), nrow = 5, ncol = 10)
df4<- matrix(data = c(1:200), nrow = 20, ncol = 10)
df5<- matrix(data = c(1:100), nrow = 10, ncol = 10)
Y<- list(df1, df2, df3, df4, df5)
Y.dc <- lapply(Y, dist.ldc(Y, "chord"))

我也尝试过直接在列表上运行它,但我也不断收到错误。

Y.dc<- dist.ldc(Y, "chord")

理想情况下,我不想为每帧运行 20 行/块代码。 最终,我还希望能够生成 nMDS 图,并同时在每个数据帧上运行 PERMANOVA。我需要编写/运行一个函数来完成它吗?

【问题讨论】:

  • 您的根本问题是lapply 中有dist.ldc(Y, "chord") 而不是dist.ldc。 lapply 的第二个参数应该是一个函数,而 dist.ldc(Y, "chord") 不是一个函数,它是一个函数调用。 lapply 通常与匿名函数一起使用,例如:lapply(Y, function(df) dist.ldc(df, "chord"))
  • 谢谢!我很感激,我已经意识到语法错误。

标签: r loops lapply vegan


【解决方案1】:

一个有效的语法:

Y.dc <- lapply(Y, dist.ldc, method = "chord")

(我假设函数 dist.lc 来自包 adespatial,我不知道)

【讨论】:

    猜你喜欢
    • 2010-12-14
    • 2017-01-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-06
    • 2011-08-08
    • 2020-09-11
    相关资源
    最近更新 更多