即使有很多关于这个主题的问题,我也没有找到解决问题的有用问题。
我有多个载体:
TEST1
[1] 0.2 0.0TEST2
[1] 0 0 0 0 0TEST3
[1] 2 6 9 8 7 4 5 6TEST4
[1] 0.20 0.30 0.10 0.01 0.02
我写了一个函数来使用以下标准来操纵值:
我希望:
TEST1
[1] NATEST2
[1]" down"TEST3
[1] -2 -6 -9 -8 -7 -4 -5 -6TEST4
[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")}
问题是它只返回根据我的标准改变的第一个值。
有什么建议吗?
答案 0 :(得分:1)
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