【发布时间】:2019-07-23 01:10:15
【问题描述】:
我的 df 看起来像这样:
library(data.table)
df <- data.table(id = c(1,1,1,2,2),
starts = c(0,0,6,0,9),
ends = c(0,6,10,9,20))
我想创建一个函数来创建一个数据表,其中包含一个包含平均值的新列:
mean <- function(df, col_name){
library(data.table)
a <- data.table(
mean_df = df[col_name != 0, mean(col_name)]
)
return(a)
}
然后当我运行函数时
mean(df, "starts")
这给了我错误:
Error in data.table(mean = df[col_name != 0, mean(col_name)]) :
argument "col_name" is missing, with no default
我不确定我做错了什么 - 我尝试使用 get() 和替换() 来传递列名,但我不确定我是否正确。
感谢任何帮助!
EDIT1:要在函数中创建的列的编辑名称
【问题讨论】:
-
您正在用一个名为 mean 的新函数覆盖 mean 函数,然后尝试在函数中调用原始 mean 函数...最好不要创建与基本 R 东西同名的函数
-
也许是
meanfun <- function(df, col_name){ df[abs(get(col_name)) > 0, mean(get(col_name))] } meanfun(df, "starts")
标签: r function data.table