)
我想使用 lapply 将 dismo::maxent 应用于多个数据集的列表。但是我收到错误消息,即参数具有不同的行数,这很奇怪,因为我从另一个数据集创建了一个数据集,并且它们应该具有相同的行数(通过 nrow() 证明)。
该函数具有以下结构:
maxent(x=dataFrame of environmental conditions at species locations (or background samples)
p=vector of 0 or 1 for species absence(0) or presence(1))
我试过了:
me_lapply <- lapply(X=split_data_env_df, FUN=maxent, dummy_presence_list)
其中 dummy_presence_list 由
dummy_presence_list <- list(rep(1, nrow(split_data_env_df[[1]])), rep(1, nrow(split_data_env_df[[2]])))
总结一下:我有两个列表:
split_data_env_df
其中包含 2 个数据框,(一个有 3 行,第二个有 2 行,每行代表物种位置的环境变量)和每个 df(温度和降水)的 2 列
t_mean | 沉淀 | t_mean2 | 沉淀2 | |
---|---|---|---|---|
价值1 | 价值2 | 价值7 | 价值8 | |
价值3 | 价值4 | 价值9 | 价值10 | |
价值5 | 价值6 |
dummy_presence_list
其中包含 2 个向量:c(1,1,1) 和 c(1,1) 告诉 maxent 公式来自 split_data 的环境参数意味着该物种存在于这些位置
我想使用 lapply 在每个列表的第一个元素和所述列表的第二个元素上运行 maxent(x, split_data_env_df
p dummy_presence_list
)
通过 lapply 的 maxent 函数返回参数的行数不相等:3、2
我认为这与函数处理数据的方式有关,而不是与数据本身有关,因为行数实际上是相同的。请注意,这只是用于测试目的的简化数据集。我的实际数据集要大得多,所以让 lapply 工作会很好。谢谢 :-)