我想根据data.frame
中两列中的值计算一个值,但是我希望能够编写一个可以将列名称传递给函数的函数,这样我就可以执行类似的操作分析不同的data.frame
s。
以下工作符合要求:
my.data.frame
%>% group_by_(.dots = c("label1", "label2"))
%>% summarise(disc.score = my.func(col1, col2))
其中my.func
是一个期望两个原子数向量作为参数的函数。
我希望能做的是这样的事情:
my.data.frame
%>% group_by_(.dots = c("label1", "label2"))
%>% summarise(disc.score = my.func(as.name("col1"), as.name("col2")))
但是,这会返回Error: object of type 'symbol' is not subsettable
,my.func
中被抱怨的特定问题是y_col[x_col <= div]
,其中x_col
是“col1”和y_col
是“col2”。
我也尝试使用summarise_()
来完成此操作但没有成功。如何在summarise()
中调用的函数中使用变量名指定两列?
编辑:
my.func <- function(x_col, y_col, cutoff) {
disc.score <- 0
y_col[x_col <= cutoff]
return(length(y_col[x_col <= cutoff]))
}
my.data.frame <- data.frame(label = c( rep("A", 5), rep("B", 5)),
x = c(1:10),
y = c(11:20))
# this function call works:
my.data.frame
%>% group_by_("label")
%>% summarize(disc.score = my.func(x, y, 6))
# this one does not:
my.data.frame
%>% group_by_("label")
%>% summarize(disc.score = my.func(as.name("x"), as.name("y"), 6))