如何在R中用自定义函数对输入序列进行映射和总结?

问题描述 投票:0回答:1

这里有一个示例数据框,这是一个机器学习预测。

df <- tibble(
  actual = rnorm(100,0,1),
  pred = rnorm(100,0,1))

我想测量一下,在过滤了不同范围的数据后,预测实际值的符号的准确性。pred(即 pred>10,pred>20,pred>30,pred>40 等)。)

下面是我写的一个函数。

predacc <- function(x,n){
  x%>%
    filter(pred > n)%>%
    summarize(acc = mean(sign(actual) == sign(pred)))
}

下面的操作正确地显示了预测值>50时预测符号的准确性。

predacc(df_evalrf,50)
# A tibble: 1 x 1
    acc
  <dbl>
1 0.854

我想对值进行同样的操作 1:100,尝试了下面的方法,但没有成功。

map(df,~predacc(.x,seq(1:100,by=1)))
 Error in UseMethod("filter_") : 
  no applicable method for 'filter_' applied to an object of class "c('double', 'numeric')"
r filter purrr
1个回答
1
投票

你可以使用 。

result <- purrr::map_df(1:100, predacc, x = df)

或者用R字头。

result <- do.call(rbind, lapply(1:100, predacc, x = df))

你确定,你要用 1:100 虽然由于您使用 rnorm 是与 mean = 0sd = 1. 你是说要用 seq(0, 1, by = 0.01) ?

© www.soinside.com 2019 - 2024. All rights reserved.