Verwenden purrr::map-Anwendung mehrere Argumente an eine Funktion
Habe ich einen Daten-frame, wie dies
df <- data.frame(tiny = rep(letters[1:3], 20),
block = rnorm(60), tray = runif(60, min=0.4, max=2),
indent = sample(0.5:2.0, 60, replace = TRUE))
Ich diese verschachtelten Daten-frame
nm <- df%>%
group_by(tiny)%>%
nest()
schrieb dann diese Funktionen
library(dplyr)
library(purrr)
library(tidyr)
model <- function(dfr, x, y){
lm(y~x, data = dfr)
}
model1 <- function(dfr){
lm(block~tray, data = dfr)
}
Möchte ich Sie dieses Modell für alle kleinen Klassen, so habe ich
nm%>%
mutate(
mod = data %>% map(model1)
)
der obige code funktioniert einwandfrei, aber wenn ich will, zu liefern, die Variablen als Argumente, wie ich Sie habe in der model1
Funktion, bekomme ich Fehler. Dies ist, was ich tun
nm%>%
mutate(mod = data %>% map(model(x=tray, y=block)))
Ich erhalte die Fehlermeldung
Error in mode(x = tray, y = block) : unused argument (y = block)
.
Auch ich habe versucht, Plotten Sie diese mit Hilfe ggplot2
plot <- function(dfr, i){
dfr %>%
ggplot(., aes(x=tray, y=block))+
geom_point()+
xlab("Soil Properties")+ylab("Slope Coefficient")+
ggtitle(nm$tiny[i])
nm%>%
mutate(put = data %>% map(plot))
die Idee ist, dass ich will ggplot
zu setzen Titel eine, b, und c für jeden der plots erzeugt werden.
Jegliche Hilfe würde sehr geschätzt werden. Dank
- sieht nicht wie
model1()
ist definiert alle Parameter, die - Es hat nicht funktioniert. Ich habe den Fehler
Error: is.data.frame(.data) || is.list(.data) || is.environment(.data) is not TRUE
- Sie eines Tages Kinder aufhören zu versuchen, zu pipe alles
Du musst angemeldet sein, um einen Kommentar abzugeben.
verwenden Basis-Funktion
split
zum aufteilen der Daten in der Liste der Gruppen.Verwendung Von Funktionen:
Erstellen Formel in Funktion
Ihre Lösung würde gearbeitet haben, wenn Sie hatten Ihre Funktion formuliert wie unten.
map
.lm_model
Funktion, kann ich das ändernblock
undtray
und liefern Sie als Argumente in der Funktion? Wie mache ich es?x
variable und diey
Variablen derlm_model
Funktion und bewerten, mit dermap
Funktiondf%>%group_by(tiny)%>%mutate(mod = data %>%map(lm_model(x='tray', y='block', data=.)))
funktioniert nicht.lm_model
Funktion in der zweiten Zeile, setzenprint(form)
. Sie werden sehen, die Magie. Für mehr info, bitte Lesen?reformulate
mutate
also er fügt den output-Modell als eine Spalte, um die bestehenden df und das würde meine Frage beantworten. Gute Arbeit aber.R
diese Art von Vorgang wird als Parametrisierung von Daten-frame. Im wesentlichen wil erstellen von pframes. Anstelle von anfügen der Ausgabe, befestigen Sie die Funktionen, die Sie erstellt haben, so können Sie rufen Sie die Funktionen auf Ihre Daten zu bekommen, die Ausgabe, Wann immer erforderlich.df%>%group_by(tiny)%>%mutate(mod = data%>%map(model(x='tray', y='block', dfr=.)))
oder wie hast du das mutieren Funktion bitteWenn Sie verwenden möchten
mutate
mitmap
haben, müssen Sie auch verwendentidyr
fürnest
. Sie werden mit tibbles zum speichern der Ausgabe (oder Daten-frames-mit-Liste-Spalten von data frames).Benutzte ich die Funktionen von @Sathish die ausführliche Antwort (mit einigen Modifikationen).
Dass Sie am Ende mit:
Ist und Sie zugreifen können, was Sie brauchen, mit
unnest
oder durch Extraktion ([
und[[
)