在R

时间:2018-04-28 05:43:19

标签: r vector replace division

我正在尝试为我的R在线课程解决练习。我们有一个向量B:

B<-c(seq(10,75,by=1))

我想将所有可被5整除的元素(没有余数,例如5,10,15)设置为NA。然后矢量看起来像(NA,11,12,13,14,NA,......)。我的想法是使用模运算符%%和替换函数:

replace((B%/%5==0),B,NA)

当我这样做时,向量返回以下输出:

[1]  TRUE FALSE FALSE FALSE FALSE  TRUE FALSE FALSE FALSE    NA    NA    NA    
NA
[14]    NA    NA    NA    NA    NA    NA    NA    NA    NA    NA    NA    NA    
NA
[27]    NA    NA    NA    NA    NA    NA    NA    NA    NA    NA    NA    NA    
NA
[40]    NA    NA    NA    NA    NA    NA    NA    NA    NA    NA    NA    NA    
NA
[53]    NA    NA    NA    NA    NA    NA    NA    NA    NA    NA    NA    NA    
NA
[66]    NA    NA    NA    NA    NA    NA    NA    NA    NA    NA

有人可以建议解决这个问题吗?

2 个答案:

答案 0 :(得分:3)

您可以使用:

B[ B %% 5 == 0 ] = NA

答案 1 :(得分:0)

这是使用ifelse()语句的另一种方法:

B <- ifelse(B %% 5 == 0, NA, B)

这些ifelse()语句可以通过强大的方式链接在一起,一次性将多个条件应用于同一个向量!

例如,如果我们想将B矢量中的所有偶数转换为NA,那么我们可以这样做:

B <- ifelse(B %% 5 == 0, NA, ifelse(B %% 2 == 0, NA, B))

可以找到有关ifelse()功能的更多信息here