我剛剛看到矢量化提高了性能,並大大降低了計算時間,在if()else的情況下,最佳選擇是ifelse()。如何使用if語句向多個語句進行矢量化?
我的問題是我得到了一些if語句裏面一個for循環,每個if語句包含多個任務,如下所示:
x <- matrix(1:10,10,3)
criteria <- matrix(c(1,1,1,0,1,0,0,1,0,0,
1,1,1,1,1,0,0,1,1,0,
1,1,1,1,1,1,1,1,1,1),10,3) #criteria for the ifs
output1 <- rep(list(NA),10) #storage list for output
for (i in 1:10) {
if (criteria[i,1]>=1) {
output1[[i]] <- colMeans(x)
output1[[i]] <- output1[[i]][1] #part of the somefunction output
} else {
if(criteria[i,2]>=1) {
output1[[i]] <- colSums(x)
output1[[i]] <- output1[[i]][1] #the same
} else {
output1[[i]] <- colSums(x+1)
output1[[i]] <- output1[[i]][1] #the same
}}}
我怎樣才能轉化爲ifelse呢?
在此先感謝!
請仔細閱讀[MCVE ] –
謝謝!審查和更新 –