为什么在使用cut()时会收到“无效的'正确'争论”

时间:2018-11-07 16:28:48

标签: r

我在R中创建了一个函数,该函数基于体积度量(而不是观察计数)创建十分位(或任何n-tile)。

User_Decile <- function(x,n,Output = " "){
    require(dplyr)
    df <- data_frame(index = seq_along(x),value = x)
    x_sum <- sum(df$value)
    x_ranges <- x_sum/n
    df <- df %>% arrange(value)
    df$cumsum <- cumsum(df$value)
    df$bins <- cut(df$cumsum, breaks = floor(seq(0, x_sum, x_ranges)),
                   right = T,
                   include.lowest = T,
                   labels = as.integer(seq(1,n,1)))

if(Output == "Summary"){
    df <- df %>% group_by(bins)
    return(df %>% summarise(Lower_Bound = min(value),
           Upper_Bound = max(value) - 1,
           Value_sum = sum(value)))}

else {
    df <- df %>% arrange(index)
    return(as.numeric(df$bins))}
}

({x是数字向量,n是将数据分组到的箱/平铺数,Output=指定是否要对边界/数据进行汇总或实际数据本身。)

它以前在我创建的用于分割一些数据的程序中运行良好,但是我只是几个月后第一次尝试再次使用该功能,我得到了:

Error in .bincode(x, breaks, right, included.lowest) :
  invalid 'right' argument

根据错误,问题出在cut()函数中的'right'参数。据我所知,right=参数是布尔型的,只接受T或F值。我都尝试过,但似乎都没有用。

是否有人可以解决此问题,或者可以推荐其他功能来代替cut()

1 个答案:

答案 0 :(得分:1)

?TRUE指出:

  

TRUE和FALSE是表示R中逻辑常数的保留字   语言,而T和F是全局变量,其初始值   设置为这些。

这里看来T被解释为其他内容。为了安全起见,您应该始终使用TRUE