如何在函数循环中使用 list(...)
How to use list(...) in loop of function
请帮助我理解 ...
参数在函数中的工作原理。我正在尝试将值输入到我的函数中,如下所示:
test_data<-function(data, ...){
pr <- list(...)
nm <- names(data)
for(i in seq_along(nm)){
if(pr == nm[i]) nm<-(nm[-i])
}
return(nm)
}
这应该将任何值传递给 dots
并检查名称是否匹配,如果匹配则从数据名称中删除该名称。但是,当我这样做时,我得到以下信息:
test_data(mtcars, 'carb')
>NULL
我应该得到:
[1] "mpg" "cyl" "disp" "hp" "drat" "wt" "qsec"
[8] "vs" "am" "gear"
不需要 for
循环。你可以这样做:
注意:我没有将通过 ...
传递的参数包装在列表中,而是将它们放在向量中。
test_data <- function(data, ...) {
pr <- c(...)
nm <- names(data)
nm[!nm %in% pr]
}
test_data(mtcars, "carb")
#> [1] "mpg" "cyl" "disp" "hp" "drat" "wt" "qsec" "vs" "am" "gear"
# Example with multiple args
test_data(mtcars, "carb", "am", "foo", "bar")
#> [1] "mpg" "cyl" "disp" "hp" "drat" "wt" "qsec" "vs" "gear"
请帮助我理解 ...
参数在函数中的工作原理。我正在尝试将值输入到我的函数中,如下所示:
test_data<-function(data, ...){
pr <- list(...)
nm <- names(data)
for(i in seq_along(nm)){
if(pr == nm[i]) nm<-(nm[-i])
}
return(nm)
}
这应该将任何值传递给 dots
并检查名称是否匹配,如果匹配则从数据名称中删除该名称。但是,当我这样做时,我得到以下信息:
test_data(mtcars, 'carb')
>NULL
我应该得到:
[1] "mpg" "cyl" "disp" "hp" "drat" "wt" "qsec"
[8] "vs" "am" "gear"
不需要 for
循环。你可以这样做:
注意:我没有将通过 ...
传递的参数包装在列表中,而是将它们放在向量中。
test_data <- function(data, ...) {
pr <- c(...)
nm <- names(data)
nm[!nm %in% pr]
}
test_data(mtcars, "carb")
#> [1] "mpg" "cyl" "disp" "hp" "drat" "wt" "qsec" "vs" "am" "gear"
# Example with multiple args
test_data(mtcars, "carb", "am", "foo", "bar")
#> [1] "mpg" "cyl" "disp" "hp" "drat" "wt" "qsec" "vs" "gear"