为每个值剪切不同的“break”参数

时间:2013-01-25 20:37:12

标签: r

我有一个数据框,其中包含[0,1](df$Estimate)和四列(df$V1-4)中断值的值列;每行的格式为c(0, [somevalue], 0.8, 1)。对于df$Estimate中的每个值,我想将其行df$V1-4的值传递给cut函数。

使用for循环版本的解决方案复制示例的代码:

nrow <- 10
set.seed(1)
df <- data.frame(Estimate = runif(nrow), V1 = 0, 
                 V2 = runif(nrow, 0.1, 0.75), 
                 V3 = 0.8, V4 = 1)
bins <- vector(length = nrow(df))
for (i in 1:nrow(df)) {
    bins[i] <- cut(df$Estimate[i], df[i, grep("V[0-9]", colnames(df))])
}

所以我有一个kludgey解决方案,但是正确的方法是什么?

2 个答案:

答案 0 :(得分:3)

我不知道这是否正确,但有可能使用findInterval

apply(df, 1, function(v) { findInterval(v[1], v[2:5]) })

答案 1 :(得分:1)

使用apply的另一个cut解决方案仍然是:

 apply(df,1,function(x) cut(x[1],x[-1],labels = FALSE))