r - 解释来自 "condition has length > 1"函数的 `if` 警告

标签 r if-statement

我有一个数组:

a <- c(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)

并且想实现以下功能:

w<-function(a){
  if (a>0){
    a/sum(a)
  }
  else 1
}

此函数想要检查 a 中是否有大于 0 的值,如果有,则将每个元素除以总和。

否则它应该只记录 1。

我收到以下警告消息:

 Warning message:
 In if (a > 0) { :
 the condition has length > 1 and only the first element will be used

如何更正该功能?

最佳答案

也许你想要ifelse:

a <- c(1,1,1,1,0,0,0,0,2,2)
ifelse(a>0,a/sum(a),1)

 [1] 0.125 0.125 0.125 0.125 1.000 1.000 1.000 1.000
 [9] 0.250 0.250

关于r - 解释来自 "condition has length > 1"函数的 `if` 警告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14170778/

相关文章:

r - 如何使用 purrr reshape 模拟函数的输出

javascript - 如果选择单选按钮显示警报

javascript - 如何设置具有多个条件的if语句,在if语句中使用有效条件的变量?

javascript - 如何在 if 语句中获取另一个 id 下的 id?

r - 使用 magrittr 语法将变量添加到 data.frames 列表

r - 使用 rvest 抓取带有跨度的 html 表

r - r 包安装期间未找到 stdio.h

r - 在测试数据上使用 LARS 模型进行预测时出现错误消息

javascript - JavaScript 中的 if-else 条件更动态

JavaScript if 语句测试一个或另一个但不是两个