Ich habe einen Datenrahmen von Spezies mit unterschiedlichen Häufigkeiten und möchte sehen, ob ihre Häufigkeiten mit irgendeinem Parameter zusammenhängen.purrr mit linearem Modell in R: ungültiges 'envir' Argument vom Typ 'character'
Ich glaube, ich sollte in der Lage sein, so etwas wie
# 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)
Zu meiner Überraschung zu tun, ich bin die folgende Fehlermeldung zu bekommen.
Fehler bei eval (predvars, Daten, env): ungültige 'envir' Argumente vom Typ 'Charakter' Traceback:
- duneJ%>% group_by ("Species")%>% Karte (my_lm)
- withVisible (eval (Zitat (`_fseq` (` _lhs`)), env, env))
- eval (Zitat (`_fseq` (` _lhs`)), env, env)
- eval (Zitat (`_fseq` (` _lhs`)), env, env)
- ` _fseq` (`_lhs`)
- freduce (Wert,` _function_list`)
- withVisible (function_list [k])
- function_list [k]
- Karte (., my_lm)
- .f (.x [[i]], ...)
- lm (Count ~ Moisture, data = df) in Zeile # 2 der Datei
- eval (mf, parent.frame())
- eval (mf , elter.frame())
- stats :: model.fra me (Formel = Count ~ Moisture, data = df, drop.unused.levels = TRUE)
- model.frame.default (Formel = Count ~ Moisture, data = df, drop.unused.levels = TRUE)
- eval (predvars, Daten, env)
klar, ich bin hier fehlt etwas. Könnte jemand bitte klarstellen? Vielen Dank.
Erwartet einen Datenrahmen. Versuchen Sie 'duneJ%>% group_by (Species)%>% summieren (lm = list (my_lm (.)))' –
Danke. Während das tatsächlich läuft, bin ich mir nicht sicher, was ich mit der Ausgabe machen soll. Ich hatte geplant, etwas wie 'duneJ%>% group_by (' Species ')%>% map (my_lm)%>% broom :: ordy' zu machen, um einen Datenrahmen von Koeffizienten und p-Werten zu erhalten. – ohnoplus
Ich dachte viel von dem Punkt der Karte war, dass es mit Objekten umgehen konnte, die keine Datenrahmen sind, und dann konnten wir den Datenrahmen in einem letzten Schritt mit etwas wie map_df (broom :: ordnung) – ohnoplus