[英]R: function applying multiple condition to a vector
即使關於此主題有很多問題,我也沒有設法為我的問題找到有用的問題。
我有多個向量:
測試1
[1] 0.2 0.0測試2
[1] 0 0 0 0 0測試3
[1] 2 6 9 8 7 4 5 6測試4
[1] 0.20 0.30 0.10 0.01 0.02
我編寫了一個使用以下條件操縱值的函數:
我期望:
測試1
[1]不適用測試2
[1]“下”測試3
[1] -2 -6 -9 -8 -7 -4 -5 -6測試4
[1] 5 3.3 10 100 50
我寫的函數是:
tets.norm<-function(ratio){
sum(ratio)->summ
ifelse(summ!=0, ifelse(length(ratio)>2 & ratio>1,
-1*ratio, ifelse(length(ratio)>2 & ratio>0 & ratio<1,
1/ratio, NA)), "down")}
問題在於,它僅向我返回根據我的條件更改的第一個值。
有什么建議嗎?
tets.norm <- function(x){
if (sum(x) == 0) { print("down")
} else if (sum(x) != 0 & length(x) > 2 & sum(x) > 1) { print(x*-1)
} else if (sum(x) != 0 & length(x) > 2 & sum(x) < 1) { print(1/x)
} else if (sum(x) != 0 & length(x) == 2 & sum(x) > 0 & sum(x) < 1) print(NA)
}
tets.norm(test1)
## [1] NA
tets.norm(test2)
## [1] "down"
tets.norm(test3)
## [1] -2 -6 -9 -8 -7 -4 -5 -6
tets.norm(test4)
## [1] 5.000000 3.333333 10.000000 100.000000 50.000000
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.