【问题标题】:Set specific vector elements to NA in R在 R 中将特定向量元素设置为 NA
【发布时间】:2018-10-08 22:35:36
【问题描述】:

我正在尝试解决我的 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

任何人都可以提出解决问题的方法吗?

【问题讨论】:

  • 输入?replace并查看手册:第一个参数应该是B,而第二个参数应该是索引向量B %/% 5 == 0
  • 当然。谢谢!

标签: r vector replace division


【解决方案1】:

这是使用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找到。

【讨论】:

    【解决方案2】:

    你可以用这个:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-05-28
      • 2014-05-23
      • 2011-10-07
      • 2018-02-24
      • 1970-01-01
      • 2010-11-11
      • 1970-01-01
      相关资源
      最近更新 更多