Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R “避免”的建议;如果;自定义函数中带有可选参数的语句_R_Data.table_Ellipsis - Fatal编程技术网

R “避免”的建议;如果;自定义函数中带有可选参数的语句

R “避免”的建议;如果;自定义函数中带有可选参数的语句,r,data.table,ellipsis,R,Data.table,Ellipsis,考虑以下对象dt: library(data.table) set.seed(12345) dt <- data.table(Gender = sample(x = c("Male", "Female"), size = 10, replace = T), Department = sample(x = c("Sales", "Marketing"), size = 10, replace = T), Hours = runif(n =

考虑以下对象
dt

library(data.table)

set.seed(12345)

dt <- data.table(Gender = sample(x = c("Male", "Female"), size = 10, replace = T), 
           Department = sample(x = c("Sales", "Marketing"), size = 10, replace = T), 
           Hours = runif(n = 10, 6, 8))

dt

    Gender Department    Hours
 1:   Male  Marketing 7.981743
 2: Female  Marketing 6.142455
 3: Female  Marketing 7.284672
 4:   Male  Marketing 6.114810
 5:   Male  Marketing 6.067997
 6:   Male  Marketing 6.833539
 7:   Male      Sales 7.845914
 8: Female  Marketing 6.689554
 9:   Male      Sales 7.483933
10: Female      Sales 6.451656
当然,这是一个MWE,我的自定义函数有一个更大的主体,但本质上,相同的概念也适用(如果可以进一步简化的话)


非常感谢您的任何建议

使用此
if
语句有什么问题?如果只传递
语句,即使它是空的,也会出现错误吗?没有问题。想象一下这个函数中有一个更大的物体。。。如果不满足条件,
if
语句强制我重复该过程。这个函数变得相当大,我觉得处理它很不愉快。
DT=data.table(x=1:100);(函数(i,…)DT[i,…])(1:5)
按预期工作。因此,要么你的例子没有抓住这里错误的本质,要么你可以毫不费力地消除
if
语句,我只是从问题的主体中复制了它!你拥有内在的力量:p
calcMean <- function(data, ...){
  args <- list(...)

  if(length(args) == 0) return(data[, .(`Avg. hours worked` = mean(Hours, na.rm = T))])

  return(data[, .(`Avg. hours worked` = mean(Hours, na.rm = T)), ...])
}