über zwei Listen kartieren [geschlossen]
Ich habe kürzlich eine Frage zur Verwendung von gestelltapply
Funktion über zwei Listen. Jede Liste ist eine Liste von Datenrahmen, die durch Aufteilen eines großen Datenrahmens erstellt wurden. Für jedes Mal, wenn die Funktion ausgeführt wird, möchte ich Vektoren aus dem ersten Element (einem Datenrahmen) übernehmenmylist1
und einige Vektoren aus dem ersten Element (einem Datenrahmen) inmylist2
und regressieren sie gegeneinander. Fahren Sie dann mit dem nächsten fortmylist1
Element undmylist2
Element. Tatsächlich nimmt die Funktion zwei Listen mit der gleichen Anzahl von Elementen und nimmt ein Paar (eine aus jeder Liste) und spielt damit herum.
Ich habe Folgendes versucht, aber die Ergebnisse, die ich erhalte, sind nicht das, was ich will:
a1<-c(1:5,rep(0,5))
a2<-c(1:5,10:6)
b2<-c(rep(100,5),rep(50,5))
z<-c(rep("part1",5),rep("part2",5))
df1<-data.frame(a1,z)
df2<-data.frame(a2,b2,z)
mylist1<-split(df1,z)
mylist2<-split(df2,z)
myfunction<-function(x,y)
{
meana <- mean(x$a)
meanb <- mean(y$b)
model<-lm((x$a)~(y$a))
return(c(model$coefficients[2],meana=meana,meanb=meanb))
}
result <- mapply(myfunction,x=mylist,y=mylist2)
#result
# x y
#y$a 1 -1
#meana 3 8
#meanb 100 50
Was ich will ist:
#y$a 1 0
#meana 3 0
#meanb 100 50
#e.g. the results in the first row are from lm((mylist1[[1]][,1])~(mylist2[[1]][,1])) and lm((mylist1[[2]][,1])~(mylist2[[2]][,1]))