请帮助我理解...个参数在函数中是如何工作的.我正在try 将值输入到函数中,如下所示:

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"

R相关问答推荐

如何从使用lapply()的r中的拆分数据帧中删除多个部分?

NA仅省略具有NA的 Select 行

R:如何在没有for循环的情况下替换多边形几何中的值?

R根据名称的载体对收件箱列采取行动

如何使用R以NASAGIBS.ViirsEarthAtNight2012风格绘制自定义 map

如何将图案添加到ggplot中的一个类别

在R中使用自定义函数时如何删除该函数的一部分?

根据固定值范围在tible中添加新行

使用预定值列表将模拟数量(n)替换为rnorm()

如何自定义Shapviz图?

如何使用R对每组变量进行随机化?

如何在区分不同条件的同时可视化跨时间的连续变量?

将小数分隔符放在R中的前两位数字之后

计算两列中满足特定条件连续行之间的平均值

在带有`R`中的`ggmosaic`的马赛克图中使用图案而不是 colored颜色

如果COLSUM为>;0,则COLNAME为向量

如何将一个方阵分解成没有循环的立方体

循环遍历多个变量,并将每个变量插入函数R

主题(Legend.key=Element_RECT(Fill=&Quot;White&Quot;))不起作用

注释不会绘制在所有ggplot2面上