函数的多个输入

时间:2015-02-16 19:10:38

标签: r

我可能只是错过了一个非常明显的解决方案,但这是我的问题:

我有一个需要一些输入的功能。我通过从数据帧中获取值来生成这些输入。什么是将我的值输入函数的最简洁方法?

我们说我有这个功能

sampleFunction<-function(input1, input2, input3){
  return((input1+input2)-input3)
}

一个输入,由一行数据帧

的几列组成
sampleInput <- c(1,2,3)

我想将sampleInput的三个值输入到我的sampleFunction中。有没有比仅仅做更清洁的方式

sampleFunction(sampleInput[1], sampleInput[2], sampleInput[3])

2 个答案:

答案 0 :(得分:2)

我会考虑使用包data.table

它没有直接回答如何传入向量的问题,但它确实有助于解决以高效打字的方式对表中的行使用函数的更大上下文问题。您可以在data.frame中执行此操作,但您的代码仍然与您尝试避免的代码类似。

如果您将data.frame设为data.table,那么您的代码将如下所示:

library(data.table)
sampleFunction<-function(input1, input2, input3){
  return((input1+input2)-input3)
}

mydt[,sampleFunction(colA,colB,colC)] # do for all rows
mydt[1,sampleFunction(colA,colB,colC)] # do it for just row 1

然后,您可以将该值添加为列,将其独立返回等

答案 1 :(得分:1)

do.call(sampleFunction, sampleInput)

P.S sampleInput必须是一个列表。如果是向量使用as.list

do.call(sampleFunction, as.list(sampleInput))