3

我有一个分类的概率数组

post <- c(0.73,0.69,0.44,0.55,0.67,0.47,0.08,0.15,0.45,0.35)

我想检索预测的类。现在我用

predicted <- function(post) { 
               function(threshold) {plyr::aaply(post, 1, 
                   function(x) {if(x >= threshold) '+' else '-'})}}

但这似乎是 R 有语法的东西。

是否有一些更直接的索引表达式?

4

2 回答 2

7
pred <- c("-", "+")[1+(post > 0.5)]
于 2013-07-30T20:12:49.013 回答
6

正如@joran 建议的那样:

predicted <- function(post)
   function(threshold) 
      ifelse(post>threshold,"+","-")

我发现函数的嵌套有点令人困惑。

ifelse(post>threshold,"+","-")

看起来很简单,你甚至可能不需要将它打包到一个函数中。

或者你可以使用

predicted <- function(post,threshold=0.5,alt=c("+","-"))
      ifelse(post>threshold,alt[1],alt[2])

或者

predicted <- function(post,threshold=0.5,alt=c("+","-"))
   alt[1+(post<=threshold)]

可能会稍微快一些(post>threshold给出一个逻辑向量,当添加到 1 时强制为 0/1,导致“低于”为 1,“高于”为 2)。或者您可以颠倒 的顺序alt,就像@DWin 在他的回答中所做的那样。

于 2013-07-30T20:08:16.063 回答