【问题标题】:for loop Warning message:numerical expression has 3 elements: only the first usedfor loop 警告信息:数值表达式有 3 个元素:只使用第一个元素
【发布时间】:2017-05-01 17:35:58
【问题描述】:

这是我收到的以下代码的警告消息。有人能帮忙找出可能是什么问题吗?

“警告信息: 在 1:x : 数值表达式有 3 个元素:只使用第一个"

x1 <- c(4,17,25)

sum_function <- function(x){

  sum_fun <- 0

  for(i in 1:length(x)) {

    sum_fun <- sum_fun + i
  }

  return(sum_fun)
}

sum_function(x1)

【问题讨论】:

  • 警告表明您的函数看起来像 for (i in 1:x) 而不是 1:length(x)。尝试在新会话中运行您的代码。
  • 你真的要通过for循环计算1+2+3+ ... +length(x)吗?
  • 如果你想要 x1 的累积总和,你应该写cumsum(x1):-function 的第二个参数不应该是多元素向量,尽管您上面的代码实际上并没有犯这个错误。

标签: r for-loop


【解决方案1】:

如果你想要 x1 的 sum,你应该写:

sum(x1)  # or perhaps cumsum(x1) if cumulative sums were desired.

:-函数的第二个参数不应该是多元素向量,尽管您上面的代码实际上并没有犯这个错误。您可以通过以下方式获得相同的警告消息:

x1 <- c(4,17,25)

junk_function <- function(x){
  z <- 0
  for(i in 1:x ) {
    z <- z + i
  }
}
junk_function(x1)

警告不是来自for 函数,而是来自:-函数。根据您的分配或目标,正确的版本是:

x1 <- c(4,17,25)

s_function <- function(x){
  z <- 0
  for( i in x ) {
    z <- z + i
               }
return(z)}

s_function(x1)

【讨论】:

    猜你喜欢
    • 2018-08-21
    • 1970-01-01
    • 2018-02-07
    • 2021-08-17
    • 2014-06-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-25
    相关资源
    最近更新 更多