作者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