mapowanie na dwie listy [zamknięte]
Ostatnio zadałem pytanie o używanieapply
funkcja na dwóch listach. Każda lista jest listą ramek danych utworzonych przez podzielenie dużej ramki danych. Za każdym razem, gdy funkcja działa, chcę pobrać wektory z pierwszego elementu (ramki danych) wmylist1
oraz niektóre wektory z pierwszego elementu (ramki danych) wmylist2
i cofnij je przeciwko sobie. Następnie przejdź do następnegomylist1
element imylist2
element. W efekcie funkcja pobiera dwie listy o tej samej liczbie elementów i pobiera parę (po jednej z każdej listy) i gra z nimi.
Próbowałem następujących rzeczy, ale wyniki, które otrzymuję, nie są tym, czego chcę:
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
Chcę:
#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]))