我是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的输出是数据帧。谢谢您的帮助。
答案 0 :(得分:2)
最小的解决方案是(我猜测,未经测试的代码,因为你没有提供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)
})