我厌倦了多个ifelse陈述R.我知道有一个名称的功能,switch但如果以下示例,无法弄清楚如何使用.
set.seed(12345)
Y <- runif(n=100, min=0, max=50)
ifelse(
test = Y < 5
, yes = "A"
, no = ifelse(
test = Y < 10
, yes = "B"
, no = "C"
)
)
Run Code Online (Sandbox Code Playgroud)
产量
[1] "C" "C" "C" "C" "C" "B" "C" "C" "C" "C" "A" "B" "C" "A" "C" "C" "C" "C"
[19] "B" "C" "C" "C" "C" "C" "C" "C" "C" "C" "C" "C" "C" "A" "B" "C" "C" "C"
[37] "C" "C" "C" "B" "C" "C" "C" "C" "C" "C" "A" "A" "A" "C" "C" "C" "C" "C"
[55] "C" "C" "C" "A" "C" "C" "C" "C" "C" "C" "C" "C" "C" "B" "C" "C" "C" "C"
[73] "C" "C" "A" "C" "C" "C" "C" "B" "C" "C" "A" "A" "B" "C" "C" "C" "C" "A"
[91] "C" "C" "A" "C" "C" "C" "C" "C" "A" "C"
Run Code Online (Sandbox Code Playgroud)
任何帮助将受到高度赞赏.谢谢
编辑
如果我有以下代码.那么什么是更好的ifelse陈述选择.
set.seed(12345)
Y <- runif(n=100, min=0, max=50)
ifelse(
test = Y < 5
, yes = -5
, no = ifelse(
test = Y < 10
, yes = 0
, no = 5
)
)
Run Code Online (Sandbox Code Playgroud)
switch不是真的意味着这样的事情,cut更好:
cut(Y,c(-Inf,5,10,Inf),labels=LETTERS[1:3],right=FALSE)
[1] C C C C C B C C C C A B C A C C C C B C C C C C C C C C C C C A B C C C C
[38] C C B C C C C C C A A A C C C C C C C C A C C C C C C C C C B C C C C C C
[75] A C C C C B C C A A B C C C C A C C A C C C C C A C
Levels: A B C
Run Code Online (Sandbox Code Playgroud)