从R中给定函数的向量调用函数

从R中给定函数的向量调用函数,r,function,R,Function,具有以下功能: setTypes <- function(df2, ...) { fns <- as.list(substitute(list(...))) for(i in 1:length(df2)) { if(fns[i] == '') { next } df2[i,] <- fns[i](df2[i,]) } return(df2) } 但是,我不明白为什么将变长参

具有以下功能:

setTypes <- function(df2, ...) {
    fns <- as.list(substitute(list(...)))
    for(i in 1:length(df2)) {
        if(fns[i] == '') {
            next
        }
        df2[i,] <- fns[i](df2[i,])
    }
    return(df2)
}
但是,我不明白为什么将变长参数作为列表并将其称为
list[index](输入)
都不起作用。甚至传递函数向量,如
c(as.Date,as.numeric,as.character)
和执行
c[1]('2015-10-10')#as.Date('2015-10-10')


我收到错误“尝试应用非功能”。。我也尝试过使用
call
,但没有效果。帮助?

问题是
类(c[1])
是一个列表,请使用
c[[1]]

示例代码

v <- c(as.numeric,as.character)
v[[1]]("1")
v[[2]](1)

v我想说这是一个重复的问题……你会得到错误,因为你的函数列表是一个字符列表。跳过“”或使用do.call
fn <- function(t) {
    return(t("55.55000"))
}
> fn(as.numeric)
[1] 55.55
v <- c(as.numeric,as.character)
v[[1]]("1")
v[[2]](1)
setTypes <- function(df2, ...) {
  fns <- list(...)
  for(i in 1:NCOL(df2)) {
    if(is.function(fns[[i]])) {
      df2[,i] <- fns[[i]](df2[,i])
    }
  }
  return(df2)
}

df <- data.frame(v1 = c(1,2), v2 = c("1","2"))
setTypes(df,as.character,'',as.numeric)