作者roymond (羅伊)
看板Statistics
標題[程式] R軟體if else的問題
時間Mon Mar 28 21:55:33 2011
------------------------------------------------------------------------
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
1F:→ gsuper:if(teamdata[i,1]==playerdata[j,p]) 應該是這裡面的東西 03/28 22:43
2F:→ gsuper:比方說 if(2010/12/16 == NA) 這樣就會出這種錯誤 03/28 22:43
3F:→ roymond:我起初也這麼覺得,可是在執行playerdata[,1]時是沒有問題 03/28 23:21
4F:→ roymond:playerdata[,1]後面有很多筆NA,但是可以執行成功 03/28 23:22
※ 編輯: roymond 來自: 118.232.0.59 (03/28 23:25)
5F:→ gsuper:有 NA 還能成功就太奇怪了 ; 3==NA 的結果不是T|F , 是NA 03/28 23:52
6F:→ gsuper:你在 if 的上一行 , 加入 print(c(j,p,k)); 03/28 23:53
7F:→ gsuper:看看迴圈是在哪裡斷掉的 03/28 23:53
8F:→ gsuper:然後分別檢查teamdata[i,1]和playerdata[j,p]這兩個東西 03/28 23:54
9F:→ gsuper:因為你是先 print 再斷掉 , 所以 i j p 都不用 +1 03/29 00:02
10F:→ roymond:我知道問題出在哪裡了!!!感謝g大您的幫忙!! 03/29 00:21
11F:→ gsuper:那就來個10萬P幣花花吧~~~ ㄎㄎ 03/29 00:23
12F:→ roymond:我是清寒家庭~~~有10萬P一定給你 哈 03/29 01:00