应用循环条件时出错

时间:2014-03-31 16:28:13

标签: r

提前抱歉提出愚蠢的问题,但我无法在搜索中找到它。

这个问题看起来很简单,但在工作日结束时我的大脑就崩溃了:

x=c(1,1,1,1,1,1,2,2,5,5) 
y=c(1,2,3,4,5,6,7,8,9,10) 
z=data.frame(cbind(x,y)) 
a=0 
for (i in z$x){ 
  if(i==2){ 
    z$y="NA" 
    a=a+1 
  } 
} 

关键在于必须检查z$x以及x=2 incert" NA"对应z$y。我得到了这个:

z  x  y 
1  1 NA 
2  1 NA 
3  1 NA 
4  1 NA 
5  1 NA 
6  1 NA 
7  2 NA 
8  2 NA 
9  5 NA 
10 5 NA 

请注意, a 的计数器正常工作,因为真正z$x=2只有两次。

a 
[1] 2 

提前谢谢。

1 个答案:

答案 0 :(得分:1)

您可以简单地使用以下内容。

z$y[z$x == 2] <- NA

z
##    x  y
## 1  1  1
## 2  1  2
## 3  1  3
## 4  1  4
## 5  1  5
## 6  1  6
## 7  2 NA
## 8  2 NA
## 9  5  9
## 10 5 10