我想在数据框中使用自定义函数,该函数组合了两列的值,并将其添加到数据框中的第三列。
对于添加列我使用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)
我没有收到警告信息。
答案 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)
}