在R中传递一个缺少的参数

bli*_*sse 4 r

我正在R中编写一个函数,除其他外,它基于列名的向量子集数据帧.我试图利用默认行为,[.data.frame如果缺少'j'参数,将返回所有列.有没有办法通过我的包装函数传递一个缺少的参数?这是一个简单的例子:

fixDataFrames <- function(listOfDataFrames, columns){
    lapply(listOfDataFrames, function(x) x[,columns])
}
Run Code Online (Sandbox Code Playgroud)

如果我没有为列指定值,则在将其传递给[函数时会出现错误:"columns参数缺失,没有默认值".

Das*_*son 6

您可以为列设置默认值,这样如果没有提供任何内容,则会抓取所有列.使用TRUE应该有效

fixDataFrames <- function(listOfDataFrames, columns = TRUE){
    lapply(listOfDataFrames, function(x) x[,columns])
}

# As Chase points out it is probably more prudent to add drop=FALSE as a parameter
fixDataFrames <- function(listOfDataFrames, columns = TRUE, drop = FALSE){
    lapply(listOfDataFrames, function(x) x[, columns, drop = drop])
}
Run Code Online (Sandbox Code Playgroud)