Sagen wir, ich habe eine Liste mit 3 Elementen - jedes ist ein Datenrahmen -, ein Vektor mit 3 Elementen, und ich möchte eine Funktion auf jedes Element der Liste und ihr jeweiliges Element anwenden der Vektor. Natürlich könnte ich das mit einer Schleife machen, aber ich versuche es mit mapply
zu vektorisieren. Hier ist, was ich tueMapply mit Liste und Vektor
myList = list(data.frame(x = 1:10), data.frame(x = 1:5), data.frame(x = 6:1))
myVec = c(7, 1, 9)
myFun = function(x, y) {
x$number = y
return(x)
}
res = mapply(myFun, myList, myVec)
res
ist nicht das, was ich erwartet hatte:
str(res)
List of 6
$ : int [1:10] 1 2 3 4 5 6 7 8 9 10
$ : num [1:10] 7 7 7 7 7 7 7 7 7 7
$ : int [1:5] 1 2 3 4 5
$ : num [1:5] 1 1 1 1 1
$ : int [1:6] 6 5 4 3 2 1
$ : num [1:6] 9 9 9 9 9 9
- attr(*, "dim")= int [1:2] 2 3
- attr(*, "dimnames")=List of 2
..$ : chr [1:2] "x" "number"
..$ : NULL
was ich erwartet hatte eine Liste mit drei Elementen war, die jeweils ein Datenrahmen mit zwei Spalten zu sein, etwa so:
str(expected)
List of 3
$ :'data.frame': 10 obs. of 2 variables:
..$ x : int [1:10] 1 2 3 4 5 6 7 8 9 10
..$ number: num [1:10] 7 7 7 7 7 7 7 7 7 7
$ :'data.frame': 5 obs. of 2 variables:
..$ x : int [1:5] 1 2 3 4 5
..$ number: num [1:5] 1 1 1 1 1
$ :'data.frame': 6 obs. of 2 variables:
..$ x : int [1:6] 6 5 4 3 2 1
..$ number: num [1:6] 9 9 9 9 9 9
was mache ich falsch?