使用现有函数编写函数

use*_*965 1 r

可能重复:
如何通过R中的包装函数传递函数及其参数?类似于python中的*args和*kwargs

我正在尝试使用现有函数编写函数,并且能够将参数传递给现有函数,而无需在新函数中定义每个参数.用语言很难表达出来.所以这是一个例子:我正在使用read.table编写一个函数,以便使用我正在编写的函数传递必须读取的文件名(基本上我不想更改工作目录).以下是示例:

MyFilePath <- "/Users/John/Work/"

  read.table.path <- function(file, path){
   x <- paste(path, file, sep="/")
   return(read.table(x))
  }
Run Code Online (Sandbox Code Playgroud)

所以要在该文件夹中读取名为"table.txt"的文件:

table <- read.table.path(file="table.txt", path=MyFilePath)
Run Code Online (Sandbox Code Playgroud)

但是,我怎么能使用此功能(read.table.path),这样我可以传递参数read.table,例如,如果我想说header=TRUE,fill=TRUE等等.

Ben*_*ker 9

使用 ...

read.table.path <- function(file, path,...){
  read.table(file.path(path, file), ...)    
}
Run Code Online (Sandbox Code Playgroud)

(该file.path函数比paste并且填充适当的特定于平台的路径分隔符).

您描述的那种小函数通常被称为"包装器".