【发布时间】:2020-07-22 17:39:26
【问题描述】:
我有一个包含两列的小数据框:fp(误报)和fn(误报),如下所示:
falsepos <- c(.05, .25, .5)
falseneg <- c(.01, .05, .1)
x_name <- "fp"
y_name <- "fn"
df <- data.frame(falsepos,falseneg)
names(df) <- c(x_name, y_name)
我还编写了一些贝叶斯规则的改编函数,如下所示:
bayesrule <- function(baserate = .03,
fp,
fn) {
output <- (baserate * (1 - fn)) / ((baserate * (1 - fn)) + ((1 - baserate) * (fp)))
return(output)
}
fp 和 fn 代表他们在 df 中所做的相同事情。在这个函数bayesrule 中,我为.03 的baserate 保留了一个默认值。我的问题是:我怎样才能编写一些R 代码-我猜可能使用apply 系列函数,但也许还有别的-传递df 中fp 的值中的每一行和fn 放入它们在bayesrule 函数中的相应位置,产生三个贝叶斯规则计算(每个都具有相同的默认baserate 0.03)?
我查看了 SX 中的类似帖子并且已经非常接近,但我只是害羞了这个标记。我已经接近了:
sapply(df,FUN = bayesrule,fn=df$fn, fp=df$fp)
但没有更近。
【问题讨论】:
-
bayesrule(fp=df$fp, fn=df$fn)不起作用有什么原因吗?它提供与sapply、apply或mapply的任意组合相同的输出。
标签: r function dataframe apply