【问题标题】:Addition involving numeric(0) values涉及 numeric(0) 值的加法
【发布时间】:2020-10-07 01:57:22
【问题描述】:

假设 x 是一个实数或向量。我的价值是假的。然后 x[i] 将返回数字(0)。我想把它当作一个实数 0 或整数 0,它们都适合加法。

numeric(0) 添加到任何实数将返回 numeric(0),而我希望获得添加的实数作为结果。如何转换数字 (0) 值?提前致谢!

【问题讨论】:

  • 写一个辅助函数as_num <- function(x) {if (length(x)==0) 0 else x}然后你可以做as_num(5[FALSE]) + 5
  • 真正的问题是numeric(0) 没有长度......这也可能导致其他问题。如果您提供更多背景信息,我们或许可以帮助您完全避免该问题。

标签: r numeric addition


【解决方案1】:

只有当我们执行+ 时,才会出现问题。如果我们使用sum

,则可以避免这种情况
sum(numeric(0), 5)
#[1] 5
sum(numeric(0), 5, 10)
#[1] 15

或者如果我们需要使用+,一个简单的选择是与0 连接,选择第一个元素。如果元素是numeric(0),则替换为0,对于其他情况,第一个元素保持不变

c(numeric(0), 0)[1]
#[1] 0

使用一个小例子

lst1 <- list(1, 3, numeric(0),  4, numeric(0))
out <- 0
for(i in seq_along(lst1)) {
       out <- out + c(lst1[[i]], 0)[1]
  }

out
#[1] 8

【讨论】:

    【解决方案2】:

    当输入为numeric(0)时,您可以使用max/min和0来获得0作为输出。

    x <- 1:10
    max(x[FALSE], 0)
    #[1] 0
    
    min(x[FALSE], 0)
    #[1] 0
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-10-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-07-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多