R:在循环中迭代随机数

如何解决R:在循环中迭代随机数

我使用的是 R 编程语言。在上一个问题 (R Language: Storing Results of a Loop into a Table) 中,我学习了如何为变量“i”的固定值迭代循环:

  #load libraries
    
        library(caret)
        library(rpart)
    
    #generate data
        
        a = rnorm(1000,10,10)
        
        b = rnorm(1000,5)
        
        c = rnorm(1000,5,10)
        
        group <- sample( LETTERS[1:2],1000,replace=TRUE,prob=c(0.5,0.5) )
        group_1 <- 1:1000
        
        #put data into a frame
        d = data.frame(a,b,c,group,group_1)
        
        d$group = as.factor(d$group)

 #start the loop


e <- d

#here is the "i" variable

for (i in 400:405) {
  d <- e
  d$group_1 = as.integer(d$group_1 > i)
  d$group_1 = as.factor(d$group_1)
  
  trainIndex <- createDataPartition(d$group_1,p = .8,list = FALSE,times = 1)
  training = d[ trainIndex,]
  test  <- d[-trainIndex,]
  
  
  fitControl <- trainControl(## 10-fold CV
    method = "repeatedcv",number = 10,## repeated ten times
    repeats = 10)
  
  TreeFit <- train(group_1 ~ .,data = training,method = "rpart2",trControl = fitControl)
  
  pred = predict(TreeFit,test,type = "prob")
  labels = as.factor(ifelse(pred[,2]>0.5,"1","0"))
  con = confusionMatrix(labels,test$group_1)
  
  #update results into table
  row = i - 399
  final_table[row,1] = con$overall[1]
  final_table[row,2] = i
  
}

        #place results in table
        final_table = matrix(1,nrow = 6,ncol=2)

现在,我试图用随机数列表替换“i”:(i in sample(100:400,10))

但是,这会返回以下错误(注意:我将 final_table = matrix(1,ncol=2) 更改为 final_table = matrix(1,nrow = 100,ncol=2)):

Error in na.fail.default(list(group_1 = c(NA_integer_,NA_integer_,: 
  missing values in object

有人可以告诉我我做错了什么吗?是否有更简单的方法将循环中的所有结果存储到矩阵(或表)中,而无需明确定义所需的行数?计算机是否可以为“i”的每个新值自动不断添加新行?

谢谢

解决方法

要使用随机数,您可以将代码更新为:

a = rnorm(1000,10,10)
b = rnorm(1000,5)
c = rnorm(1000,5,10)
group <- sample( LETTERS[1:2],1000,replace=TRUE,prob=c(0.5,0.5) )
group_1 <- 1:1000
#put data into a frame
d = data.frame(a,b,c,group,group_1)
d$group = as.factor(d$group)

#start the loop
#place results in table
final_table = matrix(1,nrow = 10,ncol=2)

e <- d
#here is the "i" variable
vec <- sample(100:400,10)

for (i in seq_along(vec)) {
  d <- e
  d$group_1 = as.integer(d$group_1 > vec[i])
  d$group_1 = as.factor(d$group_1)
  
  trainIndex <- createDataPartition(d$group_1,p = .8,list = FALSE,times = 1)
  training = d[ trainIndex,]
  test  <- d[-trainIndex,]
  
  
  fitControl <- trainControl(## 10-fold CV
    method = "repeatedcv",number = 10,## repeated ten times
    repeats = 10)
  
  TreeFit <- train(group_1 ~ .,data = training,method = "rpart2",trControl = fitControl)
  
  pred = predict(TreeFit,test,type = "prob")
  labels = as.factor(ifelse(pred[,2]>0.5,"1","0"))
  con = confusionMatrix(labels,test$group_1)
  
  #update results into table
  final_table[i,1] = con$overall[1]
  final_table[i,2] = vec[i]
  
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?
Java在半透明框架/面板/组件上重新绘画。
Java“ Class.forName()”和“ Class.forName()。newInstance()”之间有什么区别?
在此环境中不提供编译器。也许是在JRE而不是JDK上运行?
Java用相同的方法在一个类中实现两个接口。哪种接口方法被覆盖?
Java 什么是Runtime.getRuntime()。totalMemory()和freeMemory()?
java.library.path中的java.lang.UnsatisfiedLinkError否*****。dll
JavaFX“位置是必需的。” 即使在同一包装中
Java 导入两个具有相同名称的类。怎么处理?
Java 是否应该在HttpServletResponse.getOutputStream()/。getWriter()上调用.close()?
Java RegEx元字符(。)和普通点?