-1
條件語句,我有以下數據:太多ifelse語句
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)
在「真實」數據集我有更多的ifelse語句比上面顯示,代碼太長。
是否有更智能的解決方案,因此我不需要編寫如此多的ifelse語句?每個ifelse語句都與上面的一個唯一列表有關,我用不同的長度繪製樣本。
'地圖(函數(L,X)樣本(l [[x]],列表(my.list),x)'?我不確定爲什麼你只能得到長度爲15的矢量。考慮到每個'my.list'列表的長度相同,這似乎很奇怪。 – thelatemail
'ifelse'只爲每次比較返回單個值,所以你可能沒有得到你期望的結果 - 例如'ifelse(c(1,1,2)== 1,1:10,10:1)'。 – thelatemail
也許我不明白你想要這個函數返回什麼。你想從你的列表中獲得單張抽獎的矢量,還是從你的列表中獲得完整抽樣的列表? –