【发布时间】:2021-08-23 12:11:51
【问题描述】:
我在数据帧 predictions 上循环函数 cutoff 并且该函数正确返回具有两列的新 df (correct_pred)。 但我也想保护列表中每个应用循环的 df Percent 。我怎样才能做到这一点?现在该函数仅保存最后一次应用运行的 df。 我知道这个功能有点乱。它曾经是三个独立的函数,最初不应该循环。 请在下面找到代码和生成的输入矩阵。提前致谢!
predictions <- data.frame(col1=runif(200), col2=runif(200))
test <- data.frame(rbinom(200,1,0.5))
cutoff <- function(model){
Percent <- as.data.frame(matrix(NA,nrow=200,ncol=19))
for(i in 1:19){
m = i*0.05
Percent[,i] <- as.data.frame(ifelse(model <= m, 0, 1))
}
Percent <<- data.frame(Percent)
validation <- as.data.frame(matrix(NA,nrow=200,ncol=19))
for(i in 1:19){
validation[,i] <- Percent[,i] == test
}
validation <- data.frame(validation)
correct_pred <- as.data.frame(matrix(NA,nrow=19,ncol=1))
for(i in 1:19){
correct_pred[i,] <-(sum(validation[,i], na.rm = TRUE)/200)
}
correct_pred <<- data.frame(correct_pred)
}
correct_pred <<- as.data.frame(apply(predictions,2,cutoff))
correct_pred
【问题讨论】:
-
列个清单并返回
-
test对象未在提供的代码中定义,因此cutoff不会运行。无论如何,可能的答案是 1) 在使用<<-的 map/apply 函数中定义一个 lambda 函数,或者返回一个像 @Bruno 所说的列表。 -
对不起!我编辑了我的代码,它现在应该可以工作了。你能详细说明你的意思吗?
-
既然您没有使用所有数字数据类型并且没有使用列名,为什么要使用 data.frames。只需使用矩阵。