【问题标题】:Run a script over multiple datasets在多个数据集上运行脚本
【发布时间】:2017-06-26 02:16:12
【问题描述】:

我想在不同的数据集上运行一个脚本。请参阅下面的说明性示例。我定义了一种参数,告诉 R 使用哪个数据集以及如何命名输出。现在,我想要一个循环来为所有数据集运行脚本,即首先 par1 =1,然后 par2=1。请给点建议好吗?提前致谢。

library(MASS)
library(ggplot2)
library(xlsx)  

# Parameters to define which dataset to use: 
  # if i want to use the dataset "beav1", i set par1 to 1 
  # if i want to use the dataset "beav2", i set par2 to 1

  par1 = 1  
  par2 = 0

 if(par1 == 1) {  
  df = beav1        # Load the dataset           
  Name = "beav1"    # Dynamic parameter for plots and output files        
  par1 = 0
 }

  if(par2 == 1){  
    df = beav2       # Load the dataset       
    Name = "beav2"   # Dynamic parameter for plots and output files    
    par2 = 0
  }

  # Make some data manipulation:  
  df = df[,2:3]


  # Plot results:  
  ggplot(df, aes(x=time,temp)) +  
    geom_line() +
    ggtitle(paste0(Name))


  # Save results in xlsx format:  
  write.xlsx(df, paste0(Name, ".xlsx"))

【问题讨论】:

    标签: r


    【解决方案1】:

    我想你要找的是get 假设beav1beav2是你要使用的数据集,那么你可以通过

    data_names <- c("beav1", "beav2")
    
    get(data_names[1]) # give you dataset beav1
    get(data_names[2]) # give you dataset beav2
    

    【讨论】:

    • 并非如此。不过谢谢你的建议!我想到了。我在下面发布了我的解决方案。
    【解决方案2】:

    我想我想出了如何实现它。我只是将这些“参数”放入数据框格式并在循环中运行它。

    data = data.frame("par1" = 0,"par2" = 0)
    
    for(i in colnames(data)){
        data[i] = 1
    
    if(data[1] == 1){  
      df = beav1        # Load the dataset           
      Name = "beav1"    # Dynamic parameter for plots and output files        
      }
    
    if(data[2] == 1){  
      df = beav2       # Load the dataset       
      Name = "beav2"   # Dynamic parameter for plots and output files    
      }
    
    # Make some data manipulation:  
    df = df[,2:3]
    
    
    # Plot results:  
    p=ggplot(df, aes(x=time,temp)) +  
      geom_line() +
      ggtitle(paste0(Name)) +
      ggsave(filename = paste0(Name, ".png"))
    
    save(df,file=paste0(Name, ".Rda"))
    
     data[i] = 0       # Set the values back to zero 
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-09-03
      • 2020-06-09
      • 1970-01-01
      • 2015-07-14
      • 2021-11-28
      相关资源
      最近更新 更多