3 回答

TA貢獻(xiàn)1850條經(jīng)驗(yàn) 獲得超11個(gè)贊
ifelse
各州的文件:
ifelse
返回一個(gè)具有相同形狀的值,該值test
填充了從中選擇的元素yes
或no
取決于元素是否test
為TRUE
或FALSE
。
由于您傳遞長度為1的測試值,因此您將獲得長度為1的結(jié)果。如果傳遞更長的測試向量,則會(huì)得到更長的結(jié)果:
> ifelse(c(TRUE, FALSE), c(1, 2), c(3, 4))[1] 1 4
因此ifelse
,其目的是測試布爾值向量并返回相同長度的向量,填充從(向量)yes
和no
參數(shù)中獲取的元素。
由于函數(shù)的名稱,這是一個(gè)常見的混淆,當(dāng)你真的只想要一個(gè)正常的if () {} else {}
結(jié)構(gòu)時(shí)使用它。

TA貢獻(xiàn)1799條經(jīng)驗(yàn) 獲得超9個(gè)贊
我打賭你想要一個(gè)簡單的if語句而不是ifelse- 在R中,if它不僅僅是一個(gè)控制流結(jié)構(gòu),它可以返回一個(gè)值:
> if(TRUE) c(1,2) else c(3,4)
[1] 1 2
> if(FALSE) c(1,2) else c(3,4)
[1] 3 4

TA貢獻(xiàn)1801條經(jīng)驗(yàn) 獲得超8個(gè)贊
請注意,如果在以下內(nèi)容中分配結(jié)果,則可以避免此問題ifelse:
ifelse(TRUE, a <- c(1,2), a <- c(3,4))
a
# [1] 1 2
ifelse(FALSE, a <- c(1,2), a <- c(3,4))
a
# [1] 3 4
- 3 回答
- 0 關(guān)注
- 610 瀏覽
添加回答
舉報(bào)