我有一個R中的代碼,通過data.frame在當時讀取一行,如果符合某些條件,則更改data.frame中的一個變量的值。在僞碼:如何確定給出錯誤的數據點?
for(i in 1:nrow(data)) {
if (conditions on data[i,]) { change value } else {do nothing}
}
當代碼運行時,在某一點停止和引發以下錯誤消息:Error in if (condition : missing value where TRUE/FALSE needed
據我所知,該錯誤消息表示,在某一點,當對if
聲明中的條件進行評估,結果爲Na
而不是TRUE
或FALSE
。
然而,當我通過使用「存儲」在R(和我假設是拋出錯誤的數據集的行)的i
值嘗試R中的條件I得到的TRUE
答案。我是否正確理解i
的值允許我確定哪一行數據幀正在拋出錯誤?如果不是,我應該尋找其他方法來確定哪一行數據集導致錯誤?
如果'data'是一個data.frame,你通常會使用'for(i in 1:nrow(data))'。看看'暗淡(數據)'來看看你得到了什麼。此外,沒有** [可重現的例子](http://stackoverflow.com/a/28481250/2725969)**很難提供幫助。另外,'ifelse'可能是一種更好的方式來做你想做的事情。 – BrodieG
@BrodieG感謝您的反饋。我想我的問題是更具體地詢問我是否可以使用'i'來確定data.frame的哪一行會拋出錯誤,而不是錯誤本身的性質。是這樣嗎?存儲在R中的'i'的值是否表示代碼遇到錯誤的行? –
是的,但請記住'data [i]'返回第i列,而不是第i行。對於你需要'data [i,]'的行。另外,請注意我上面關於'nrow'和'dim'的評論。 – BrodieG