[程式] R軟體if else的問題

看板Statistics作者 (羅伊)時間13年前 (2011/03/28 21:55), 編輯推噓0(0012)
留言12則, 2人參與, 最新討論串1/1
------------------------------------------------------------------------ TITLE請著名軟體類別 按ctrl+v可預覽 發文前請把灰色的註解刪除 可使用ctrl+y刪除一整行 [軟體程式類別]:R [程式問題]:資料處理 [軟體熟悉度]:3個月~1年 [問題敘述]: 我有兩筆資料,teamdata是全部的日期時間(格式如:2011/02/12) playerdata是有各個不同人在不同日期出現的資料 用迴圈跑時出現問題,而當我一個一個檢查, p=1時可以執行,p=2、3時不能執行,p=4又可以執行 [程式範例]: colnames(playerdata)=names(player) checkgame=data.frame() for(i in 1:n11) { for(p in 1:playernumber) { for(j in 1:gamesnumber) { if(teamdata[i,1]==playerdata[j,p]){ checkgame[i,p]=1 break }else{ checkgame[i,p]=0 } } } } 程式執行後出現以下訊息: 錯誤在if (teamdata[i, 1] == playerdata[j, p]) { : 需要 TRUE/FALSE 值的地方有缺值 部分資料: > playerdata AveryBradley ChrisJohnson DelonteWest GlenDavis JeffGreen JermaineO'Neal 1 2010/11/22 2011/02/01 2010/11/17 2010/10/26 2010/10/27 2010/10/26 2 2010/11/30 2011/02/02 2010/11/19 2010/10/27 2010/10/29 2010/10/27 3 2010/12/05 2011/02/24 2010/11/21 2010/10/29 2010/10/31 2010/11/02 4 2010/12/08 2011/02/26 2010/11/22 2010/11/02 2010/11/03 2010/11/03 5 2010/12/11 2011/02/28 2010/11/24 2010/11/03 2010/11/04 2010/11/05 6 2010/12/16 <NA> 2011/02/22 2010/11/05 2010/11/14 2010/11/07 7 2010/12/19 <NA> 2011/02/24 2010/11/07 2010/11/22 2010/11/08 8 2010/12/22 <NA> 2011/02/26 2010/11/08 2010/11/24 2010/12/25 9 2010/12/25 <NA> <NA> 2010/11/11 2010/11/26 2010/12/28 10 2010/12/28 <NA> <NA> 2010/11/13 2010/11/28 2010/12/29 11 2010/12/29 <NA> <NA> 2010/11/17 2010/11/29 2010/12/31 12 2010/12/31 <NA> <NA> 2010/11/19 2010/12/01 2011/01/02 13 2011/01/07 <NA> <NA> 2010/11/21 2010/12/03 2011/01/03 14 <NA> <NA> <NA> <NA> <NA> <NA> 15 : : : : : : 16 : : : : : : 後面還有很多筆NA,可是執行playerdata[,1]是可以的,這就很奇怪... 懇請高手大大幫忙解惑!!!我已經被這個東西卡了一兩天了..... 實在想不出哪裡有問題~~~拜託拜託~~我會非常感謝您的!!! ----------------------------------------------------------------------------- -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 118.232.0.59

03/28 22:43, , 1F
if(teamdata[i,1]==playerdata[j,p]) 應該是這裡面的東西
03/28 22:43, 1F

03/28 22:43, , 2F
比方說 if(2010/12/16 == NA) 這樣就會出這種錯誤
03/28 22:43, 2F

03/28 23:21, , 3F
我起初也這麼覺得,可是在執行playerdata[,1]時是沒有問題
03/28 23:21, 3F

03/28 23:22, , 4F
playerdata[,1]後面有很多筆NA,但是可以執行成功
03/28 23:22, 4F
※ 編輯: roymond 來自: 118.232.0.59 (03/28 23:25)

03/28 23:52, , 5F
有 NA 還能成功就太奇怪了 ; 3==NA 的結果不是T|F , 是NA
03/28 23:52, 5F

03/28 23:53, , 6F
你在 if 的上一行 , 加入 print(c(j,p,k));
03/28 23:53, 6F

03/28 23:53, , 7F
看看迴圈是在哪裡斷掉的
03/28 23:53, 7F

03/28 23:54, , 8F
然後分別檢查teamdata[i,1]和playerdata[j,p]這兩個東西
03/28 23:54, 8F

03/29 00:02, , 9F
因為你是先 print 再斷掉 , 所以 i j p 都不用 +1
03/29 00:02, 9F

03/29 00:21, , 10F
我知道問題出在哪裡了!!!感謝g大您的幫忙!!
03/29 00:21, 10F

03/29 00:23, , 11F
那就來個10萬P幣花花吧~~~ ㄎㄎ
03/29 00:23, 11F

03/29 01:00, , 12F
我是清寒家庭~~~有10萬P一定給你 哈
03/29 01:00, 12F
文章代碼(AID): #1Da9DPcc (Statistics)