2
我期望ifelse
函數返回相同類型作爲其第二個或第三個參數的一個空的載體,具體根據文檔:R ifelse是否正確地使用空向量?
值:
相同長度的向量和屬性(包括尺寸和 ''class'')作爲'測試'並且來自'是'或 '否'的值的數據值。答案的模式將從邏輯上強制爲 ,首先適用從'是'取得的任何值,然後從'否'取得任何取值 。
但是,在所有矢量都爲空的情況下,無論第二個和第三個參數的類型如何(R版本3.3.2),它都返回logical(0)
。
> ifelse(logical(), numeric(), numeric())
logical(0)
這是一個錯誤?如果是的話,我該如何報告,是否有機會修復?
我用例是我自己用任意值
rep_nan<-function(x, value=0) ifelse(is.na(x), value, x)
但是提到不一致導致的問題類型的NA替換,例如,用data.table
工作時的功能。
我看到的行爲,我現在承認這可以解釋爲不矛盾的文檔。但我仍然看不到這種行爲的原因。 – Valentas
@Valentas R會返回一個無效的邏輯測試嗎?返回'yes'或'no'參數值是沒有意義的,因爲'test'既不是假也不是真。這種行爲也反映了「is.na(邏輯())」,並且比返回「NA」更具信息性(即它報告輸入的長度爲0) – coletl
它應該停止,異常情況下無效的邏輯測試。我可以舉一個例子,其中相應的函數的行爲正確和一致:http://code.kx.com/q/ref/lists/#vector-conditional – Valentas