繁体   English   中英

R循环中的NA / NAN参数错误

[英]NA/NAN Argument Error in R loop

我是R语言的新手,我希望获得一些帮助。 我有一个带有用户定义函数的R代码,称为Plot_linear_fit,在我运行时没有任何错误。

 ReportDateRange <- c("2010-11-01", "2017-01-31")
 trendDateRange1 <- c("2015-01-01", "2015-08-31")
 trendDateRange2 <- c("2015-01-01", "2016-10-31")
 trendDateRange3 <- c("2015-01-01", "2016-06-30")
 plotDate1 <- c("2011-01-01")
 plotDate2 <- c("2015-01-01")
 plotDate3 <- c("2013-01-01")
 numoftrends <- 3

 TRx.Plot1 <- Plot_linear_fit(Sum.TRx,
                              trendDateRange1,
                              plotDate1, 
                              ReportDateRange)

 TRx.Plot2 <- Plot_linear_fit(Sum.TRx,
                              trendDateRange2,
                              plotDate2, 
                              ReportDateRange)

 TRx.Plot3 <- Plot_linear_fit(Sum.TRx,
                              trendDateRange3,
                              plotDate3, 
                              ReportDateRange)

我想使用lapply将这些代码放入循环中,但是当我尝试运行它时,却得到了NA / NAN参数

 ReportDateRange <- c("2010-11-01", "2017-01-31")
 trendDateRange1 <- c("2015-01-01", "2015-08-31")
 trendDateRange2 <- c("2015-01-01", "2016-10-31")
 trendDateRange3 <- c("2015-01-01", "2016-06-30")
 plotDate1 <- c("2011-01-01")
 plotDate2 <- c("2015-01-01")
 plotDate3 <- c("2013-01-01")
 numoftrends <- 3

 lapply(1:numoftrends, function(j) {
    paste0('TRx.Plot', j) <- Plot_linear_fit(Sum.TRx,
                                 paste0("trendDateRange", j),
                                 paste0("plotDate", j),
                                 ReportDateRange)

     })

当您将其放入lapply中时,我不确定是什么问题。 函数Plot_linear_fit的输出是一个数据框。 谢谢您的帮助。

最小的解决方法是(我想是未经测试的代码,因为您没有提供MRE ):

lapply(1:numoftrends, function(j) {
  assign(paste0('TRx.Plot', j),
         Plot_linear_fit(Sum.TRx,
                         get(paste0("trendDateRange", j)),
                         get(paste0("plotDate", j)),
                         ReportDateRange),
         pos = .GlobalEnv)
})

但是,将分配完全放到全局工作区中,然后直接使用列表会更惯用:

list_of_plots <- lapply(1:numoftrends, function(j) {
  Plot_linear_fit(Sum.TRx,
                  get(paste0("trendDateRange", j)),
                  get(paste0("plotDate", j)),
                  ReportDateRange)
})

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM