【问题标题】:Print Only When Condition is True in R仅当 R 中的条件为真时打印
【发布时间】:2021-03-24 00:17:55
【问题描述】:

这个解决方案Automate Seed as a Vector Instead of an Integer in R

library(forecast)
SEED_vector <- c(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19)
arima_order_results = data.frame()
for (my_seed in SEED_vector){
  set.seed(my_seed)
  ar1 <- arima.sim(n = 10, model=list(ar=0.2, order = c(1, 0, 0)), sd = 1)
  ar2 <- auto.arima(ar1, ic ="aicc")

  arima_order = arimaorder(ar2)
  arima_order = t(as.data.frame(arima_order))
  # Print the arima order.
  print(arima_order)
  # This line of code is just if you want to store the results in a dataframe
  arima_order_results = rbind(arima_order_results,arima_order)
}

我只希望打印 (1, 0, 0) 中的 arimaorder 而不是全部

我试过了,但出现了错误:

SEED_vector <- 1:100
arima_order_results <- data.frame()
while(TRUE){for (my_seed in SEED_vector) {set.seed(my_seed)
    ar1 <- arima.sim(n = 10, model=list(ar=0.2, order = c(1, 0, 0)), sd = 1)
    ar2 <- auto.arima(ar1, ic ="aicc")
    if(all(arimaorder(ar2)==c(1,0,0))) print(arima_order_results)
    arima_order = arimaorder(ar2)
    arima_order = t(as.data.frame(arima_order))
    # Print the arima order.
    print(arima_order)
    # This line of code is just if yo uwant to store the results in a dataframe
    arima_order_results = rbind(arima_order_results,arima_order)

}}

我想要这样的东西:

#arima_order14 1 0 0 
#arima_order39 1 0 0 
#arima_order47 1 0 0 

【问题讨论】:

  • 你的第二句话我不清楚,请写成MWE的答案

标签: r if-statement conditional-statements arima random-seed


【解决方案1】:

也许这有帮助

SEED_vector <- 1:200
arima_order_results <- data.frame()
flag <- TRUE
i <- 1
seed_out <- c()
while(flag){ 
 
     set.seed(SEED_vector[i])
     ar1 <- arima.sim(n = 10, model=list(ar=0.2, order = c(1, 0, 0)), sd = 1)
     ar2 <- auto.arima(ar1, ic ="aicc")
     if(all(arimaorder(ar2)==c(1,0,0))) {
     
        #print(arima_order_results)
        print(paste0('arimaorder', SEED_vector[i], ' ' , 
              paste(arimaorder(ar2), collapse=" ")))
         seed_out <- c(seed_out, SEED_vector[i])
        
        }
       
     arima_order = arimaorder(ar2)
     arima_order = t(as.data.frame(arima_order))
     
     
     arima_order_results = rbind(arima_order_results,arima_order)
     
     i <- i+1
     if(i == length(SEED_vector)) {
     
      flag <- FALSE
     }

 }

-输出

#[1] "arimaorder14 1 0 0"
#[1] "arimaorder152 1 0 0"
#[1] "arimaorder165 1 0 0"

现在,我们检查向量

seed_out
#[1]  14 152 165

并且可以使用write.tablecat 将其写入文件

cat(seed_out, file = 'seed_file.txt')

【讨论】:

  • 是的,我想要带有相应种子标签的arima_order 印有
  • @DanielJames YOu 的意思是 print 应该写入文件吗?在这种情况下,您希望将print 更改为cat,并从cat 的第二行指定fileappend = TRUE
  • @DanielJames 我想说将print 更改为cat(paste0('arimaorder', SEED_vector[i], ' ' , paste(arimaorder(ar2), collapse=" ")), file = "file1.txt", append = TRUE)
  • @DanielJames 你能检查我的更新吗
  • @DanielJames 我创建了一个seed_out 向量来存储符合条件的种子编号的输出。可以使用cat 将其写入文件
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-08-14
  • 1970-01-01
  • 2020-10-04
  • 1970-01-01
  • 2021-04-11
  • 2014-07-09
相关资源
最近更新 更多