[問題] 為什麼function的return值是NaN

看板R_Language作者 (hewolf)時間8年前 (2017/09/20 12:18), 8年前編輯推噓0(001)
留言1則, 1人參與, 最新討論串1/1
[問題類型]: 程式諮詢 [軟體熟悉度]: 入門(寫過其他程式,只是對語法不熟悉) [問題敘述]: 大家好 我寫了一個function 對於這個function的傳回值有疑問,不知道如何解 就是如果只要輸入一個值data$V5[100],回傳值是自己期待的 但如果輸入一整排的值data$V5,卻會出現NaN 有人說NaN會出現是因為function裡面有0/0的情況出現 但如果真的如此,data$V5[100]也應該是NaN才對 真不知道怎麼解這個問題 麻煩高手解答 [程式範例]: 從csv讀資料 data<-read.csv("input.csv", header=F, sep=" ",skip=29)[ ,c('V3','V5')] V5的第一百筆data為0.8 ( [99] 0.8022100 0.8000000) data$V5[100] function對data$V5[100]這個輸入的return值為35093.64 function(data$V5[100]) 如果一次輸入一排資料data$V5,結果return值卻是( [99] NaN NaN) function(data$V5) [環境敘述]: linux [關鍵字]: NaN, function 選擇性,也許未來有用 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 101.0.132.64 ※ 文章網址: https://www.ptt.cc/bbs/R_Language/M.1505881085.A.6E9.html

09/20 12:53, , 1F
function的code呢...?
09/20 12:53, 1F
cywhale: 要給function code才知道為什麼... 後來解決了 原因是我function 裡面有if 判斷句,而if一次只能處理一個值 而且還有sqrt(1-x) 這樣的運算 當(1-x)<0 就出現了NaN 後來改成類似這樣就行了 ifelse( isTRUE(1-f(data$V5)>0),( sqrt(1-f(data$V5) ),0 ) ※ 編輯: hewolf (101.0.132.64), 09/20/2017 14:57:11
文章代碼(AID): #1PmUlzRf (R_Language)
文章代碼(AID): #1PmUlzRf (R_Language)