R 如何在一列上应用具有多个参数的函数?

R 如何在一列上应用具有多个参数的函数?,r,R,我试图将一个函数应用于具有多个列的列,其中一个参数仅作为给定的列向量进行更改 我试过: Temp = c(2, 3, 5) s = c("aa", "bb", "cc") b = c(TRUE, FALSE, TRUE) df = data.frame(s, b, Temp) sapply(X=df$Temp, FUN=GJNeeded,SqFt=212265, RValue=2, Temp_Grow=14) get中出错(如.character(FUN),mode=“functio

我试图将一个函数应用于具有多个列的列,其中一个参数仅作为给定的列向量进行更改

我试过:

Temp = c(2, 3, 5) 
s = c("aa", "bb", "cc") 
b = c(TRUE, FALSE, TRUE) 
df = data.frame(s, b, Temp)  
sapply(X=df$Temp, FUN=GJNeeded,SqFt=212265, RValue=2, Temp_Grow=14)
get中出错(如.character(FUN),mode=“function”,envir=envir): 未找到模式“function”的对象“GJNeeded”

我的自定义功能是:

  GJNeeded = function(SqFt, RValue, temp_outside, Temp_Grow){
      if (temp_outside<Temp_Grow) {
      BTU=(temp_outside-Temp_Grow)*SqFt/RValue
  GJ=BTU/1000000*1.0551
}#end if
}#end GJNeeded
GJNeeded=函数(SqFt、右值、外部温度、温度增长){

如果(temp_outOP的函数正在使用
sapply
,但我们可以将其矢量化,而不是循环遍历每个值

GJNeeded <- function(SqFt, RValue, temp_outside, Temp_Grow){
  i1 <- temp_outside < Temp_Grow
  res <- temp_outside #else part is not clear
  BTU <- (temp_outside[i1] - Temp_Grow) * SqFt/RValue
  res[i1] <- BTU/1000000*1.0551
  res 
}

GJNeeded(SqFt = 212265, RValue = 2, temp_outside = df$Temp, Temp_Grow = 14)
#[1] -1.343765 -1.231784 -1.007824

GJNeeded它对我有效
sapply(X=df$Temp,FUN=GJNeeded,SqFt=212265,RValue=2,Temp_Grow=14)[1]-1.343765-1.231784-1.007824
你能试试新的R会话吗