仅当R中的条件为true时才打印 [英] Print Only When Condition is True in R

查看:73
本文介绍了仅当R中的条件为true时才打印的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

此解决方案我只希望打印(1,0,0)的 arimaorder ,而不是全部

I will only want arimaorder of (1, 0, 0) to be printed instead of all

我尝试了此操作,并出现了错误:

I tried this and jammed with error:

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 

推荐答案

也许有帮助

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.table cat

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

这篇关于仅当R中的条件为true时才打印的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆