У меня есть список:
ls <- list(c(a,b),c(i,j))
a<-"char1"
b<-"char2"
i<-"char4"
j<-"char5"
Мне нужно применить следующие функции к отдельным элементам списка
f1<- function(x) {
switch(x,
"char1"=1,
"char2"=2,
"char3"=3
)
}
f2 <- function(x){
switch(x,
"char4"=1,
"char5"=2,
"char6"=3
)
}
Это то, что я пытался, но я получаю ошибку
mapply(function(dat, fun) fun(dat), ls, list(f1,f2))
Ошибка в переключателе (x, char1
= 1, char2
= 2, char3
= 3): EXPR должен быть вектором длины 1
Я вижу, что x
в switch
должно иметь длину 1. Прямо сейчас я думаю, что x
принимает c(a, b)
.
В принципе, я бынравится применять f1
к a
с x=a
, применять f1
к b
с x=b
, применять f2
к i
с x=i
, применять f2
к j
сx=j
Когда я пробую mapply для 1 функции над 1 списком, она работает правильно
mapply (function (dat, fun) fun (dat), c (a, b), список (f1))