: x <- c(3600, 5000, 12000, NA, 1000, 2000, 600, 7500, 1800, 9000)
: ss<-0
: i<-1
: done<-FALSE
: while(!done){
: if(x[i]>1){
: ss<-ss+1
: }
: if(is.na(x[i])==TRUE){
: ss<-ss+0
: }
: if(x[i]=="NA"){
: done<-TRUE
: }
: i<-i+1
: }
: 这个语法还是无法正确显示出第几笔是missing
: 目前知道判断是否为缺失值需要使用is.na(x)的语法,但不知道如何结合
: 麻烦高手相救,谢谢
# your method
x <- c(3600, 5000, 12000, NA, 1000, 2000, 600, 7500, 1800, 9000)
ss<-0
i<-1
done<-FALSE
while(!done){
if(x[i]>1 & !is.na(x[i]>1)){
}
if(is.na(x[i])){
done<-TRUE
}
ss = i
i<-i+1
}
ss
想了一下你的bug, 在 if() 中只能吃TRUE or FALSE
例如 x[i] > 1 这是条件式, 但是若 x[i] 为 NA 则条件式失败, 回传 NA
举例来说
if(TRUE) cat("TRUE","\n")
if(NA) cat("Error","\n")
这时要用
TRUE & NA; 不是 TRUE | NA; 请自行比较两者差别
其他写法
#
x = c(3600, 5000, 12000, NA, 1000, 2000, 600, 7500, 1800, 9000)
# method 1
na.action(na.omit(x))
# method 2
grep("TRUE", is.na(x))
# method 3
n = length(x); s = NULL
for(i in 1:n){
if(is.na(x[i])) s = c(s, i)
}
# method 4
i = 1;
while(!is.na(x[i])){
i = i + 1
if(is.na(x[i])) cat(x[i],"\n")
}
期中考到了, 我也来渡化众生, 期望paper能accepted.