Рассмотрим следующий объект 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
Теперь я хочу написать свою собственную функцию для расчета среднего количества часов, отработанных для всей таблицы или по группам.Мне было интересно, можно ли еще упростить приведенную ниже функцию.Более конкретно, если я могу избежать написания оператора if()
, когда ...
не используется.Это то, что я получил до сих пор:
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)), ...])
}
Конечно, это MWE, моя пользовательская функция имеет больший корпус, но, по сути, применима та же концепция (если она будетУпрощено).
Любое предложение очень ценится!