具有功能错误的变异:&#34;数值表达式具有<n>元素:仅使用第一个&#34;

时间:2015-10-10 10:07:52

标签: r dplyr

我想在数据框中使用自定义函数,该函数组合了两列的值,并将其添加到数据框中的第三列。

对于添加列我使用mutate并且它完美地工作,例如如果我总结两列左右但是使用自定义函数我会收到此错误:

  

数值表达式有32个元素:只使用第一个

功能如下:

 SigSum <- function(x,y) {
  result <- 0
  for(i in c(0:(x-1)))
  {
    result <- result + (1/factorial(i)) * y^i
  }
  return(result)
}

作为一个例子,我尝试了mtcars

> bla <- mtcars  %>% mutate(bbb = SigSum(gear, carb))
Warning message:
In 0:(x - 1) : numerical expression has 32 elements: only the first used

如果我使用例如

> bla <- mtcars  %>% mutate(bbb = gear + carb)

我没有收到警告信息。

1 个答案:

答案 0 :(得分:0)

您的函数包含错误。您的for语句不适用于矢量输入。你要求一个x向量的循环而不是向量x的长度。

如果您按如下方式更改它将起作用:

更新功能:

SigSum <- function(x,y) {
  result <- rep(NA, length(x))
  for(i in 1:length(x)) {
    result[i] <- 0
    for(j in 0:(x[i]-1)) {
      result[i] <- result[i] + (1/factorial(j)) * y[i]^j
    }
  } 
  return(result)
}