R中带有线性模型的purrr:'character'类型的无效'envir'参数

问题描述 投票:0回答:1

我有一个具有不同丰度的物种数据框,我想看看它们的丰度是否与某些参数有关。

我想我应该能够做类似的事情

# Load in the dune data set and tidyverse
library(vegan)
data(dune)
data(dune.env)
library(tidyverse)

# Reshape the species matrix into long form data
duneM <- dune %>% rownames_to_column('Site') %>% gather(Species, Count, -Site)

# Join the species and environmental data
duneE <- dune.env %>% rownames_to_column('Site')
duneJ <- left_join(duneM, duneE, by = 'Site')

# Basic linear model, that compares species counts to moisture data
my_lm <- function(df){
    lm(Count ~ Moisture, data = df)
}

# Group the data by species and apply the function to each one
duneJ %>% group_by('Species') %>% map(my_lm)

令我惊讶的是,我收到以下错误消息。

eval中的错误(predvars,data,env):'character'类型的无效'envir'参数Traceback:

  1. duneJ%>%group_by(“Species”)%>%map(my_lm)
  2. withVisible(eval(quote(`_fseq`(`_lhs`)),env,env))
  3. eval(quote(`_fseq`(`_lhs`)),env,env)
  4. eval(quote(`_fseq`(`_lhs`)),env,env)
  5. `_fseq`(`_lhs`)
  6. reduce(value,`function_list`)
  7. withVisible(function_list [K])
  8. function_list [k]的
  9. map(。,my_lm)
  10. .f(.x [[i]],...)
  11. lm(Count~M含,data = df)#在文件的第2行
  12. eval(mf,parent.frame())
  13. eval(mf,parent.frame())
  14. stats :: model.frame(formula = Count~M含,data = df,drop.unused.levels = TRUE)
  15. model.frame.default(formula = Count~M含,data = df,drop.unused.levels = TRUE)
  16. eval(predvars,data,env)

显然,我在这里遗漏了一些东西。有人可以澄清一下吗?谢谢。

r purrr
1个回答
0
投票

它帮助我看了这篇文章http://omaymas.github.io/Climate_Change_ExpAnalysis/,这个视频https://www.youtube.com/watch?v=rz3_FDVt9eg了解如何最好地使用purrr和扫帚在一起。正如G. Grothendeik指出的那样,我可以在数据框中添加一个带有模型的列(每个单元格都是完整的模型)。使用map函数的方法是

 duneJ %>% group_by(Species) %>% nest %>% mutate(Mod = map(data, my_lm0)) -> test

这里,nest是一个关键函数,它使列成为一个数据帧列表,每个列包含有关每个物种的数据并将其保存到名为“data”的默认列。我在mutate函数内部运行map,将模型保存到另一列,其中每个单元格都是一个新模型。

如果我想查看模型结果,我可以将它们组合成一个带有地图和扫帚的数据框列表,选择相关数据,然后unnest它们,如下所示:

 test %>% mutate(Glance = map(Mod, glance)) %>% select(Species, Glance) %>% unnest

这给我一个新的数据框架,其中包含每个物种的模型结果,这是我最终的目标,即使我没有在问题中完全解释。

© www.soinside.com 2019 - 2024. All rights reserved.