Ich habe folgende Daten:Bedingte Anweisungen mit zu vielen ifelse Aussagen
my.list<-list(a=c(55,17,18,18,18,21),
b=c(11,17,17,17,22,18,22),
c=c(55,17,22,22,22,22,22,21,30))
x<-c(1,1,1,1,2,2,3,3,3,3,3,3,3,3,3)
set.seed(1)
my.function <- function(x) {
ifelse(x == 1,sample(my.list$a,replace = T),
ifelse(x == 2,sample(my.list$b,replace = T),
ifelse(x == 3,sample(my.list$c,replace = T)
)))
}
p<-sapply(x, my.function)
In der „realen“ Daten-Set ich viel mehr ifelse-Aussagen haben als oben gezeigt, und der Code ist zu lang.
Gibt es eine intelligentere Lösung, so dass ich nicht so viele iffelse-Statements schreiben muss? Jede ifelse-Anweisung bezieht sich auf eine eindeutige Liste wie oben, mit unterschiedlichen Längen, aus denen ich Beispiele zeichne.
'Karte (function (l, x) Beispiel (l [[x]]), Liste (my.list), x) '? Ich bin mir nicht sicher, warum Sie deshalb nur einen Vektor der Länge 15 bekommen. Das scheint wirklich merkwürdig, wenn man bedenkt, dass Sie eine Stichprobe in gleicher Länge von jeder "my.list" -Liste nehmen. – thelatemail
'ifelse' gibt nur einzelne Werte für jeden Vergleich zurück, so dass Sie möglicherweise nicht das bekommen, was Sie erwarten -' ifelse (c (1,1,2) == 1, 1:10, 10: 1) 'zum Beispiel. – thelatemail
Vielleicht verstehe ich nicht, was Sie möchten, dass diese Funktion zurückkehrt. Möchten Sie einen Vektor einzelner Draws aus Ihrer Liste oder eine Liste voller Resamples aus Ihrer Liste? –