自从我加入这个社区以来,我正在处理同一组用户定义的函数 . 所以我将提供相同的伪数据以及其他必要的代码 . 我的问题是关于将plyr或apply函数应用于包含数据帧作为元素的列表的正确语法,其中我想将“用户定义函数”应用于该数据帧列表的每个元素 . (这篇文章很长因为我提供了所有的代码)
为用户定义的函数创建数据
set.seed(31)
foo
rlnorm(1, meanlog=0,sdlog=1)*(myHour) + (150*myDate)
}
Hour
Day
dates
myData
names(myData)
myData$Adspend
myData$Date
myData$Demand
myData$Hour
使用此数据,我将其传递给我创建的函数,该函数将数据集拆分为24个列表元素,并应用我创建的函数,该函数将早期小时广告支出列添加到每小时需求的每个数据集中 . 每个数据集将具有不同的小时数 . 这非常有效 .
library(timeDate)
library(lubridate)
library(xlsx)
library(rJava)
library(xlsxjars)
library(zoo)
library(xts)
library(reshape)
library(reshape2)
######################################################################################
AddLag
SplitDat
DFE
DATASETS
LAGDAT
CORS
BESTHR
BEST
Lags
ADDATE
RESPDATE
HOURAD
HOURAD
ADHR
HOURRSP
HOURRSP
DEMHR
for(i in 1:ncol(ADHR)) {
DFE[[i]]
ifelse(i==1,DATASETS[[i]]
LAGDAT[[i]]
CORS
mask
BESTHR[[i]]
BEST[[i]]
}
return(BEST)
}
请尝试以下方法查看输出:
fdata
Fdata是由数据帧组成的列表 . 我想将我创建的另一个函数应用于此数据框列表,该函数将相同的季节变量集附加到Fdata的每个元素 .
这是函数和代码:
AddCalEffect
#Create variables of calendar effects from Date field
DF$Date
DF[[Time]]
monthly
dow
year1
quarter
######################################################################################################################
#Create matrices of seasonal indicators for covariates
hmatx
mmatx
dmatx
qmatx
#######################################################################################################################
# Create Holiday indicator variables with both holiday and weekend flagged if within 2 days of holiday
HolidayEnds
h
w
sort(unique(c(h,h[w%in%0:2]-1,
h[w%in%1:2]-2,
h[w==2]-3,
h[w==4]+3,
h[w%in% 4:5]+2,
h[w%in%4:6]+1)))
}
Labor
LaborDay
Mem
MemDay
Eas
Easter
Thanks
ThanksDay
July
July4th
Christ
Christmas
New
NewYears
colnames(hmatx)
colnames(dmatx)
colnames(mmatx)
colnames(qmatx)
Holly
Season
Hourz
ifelse(Hourly=="TRUE", DataObject
if(!Seasonal&!Holiday){DataObject
else if (!Seasonal&Holiday){DataObject
else if (Seasonal&!Holiday){DataObject
else if (Seasonal&Holiday){DataObject
return(DataObject)
}
尝试在fdata上使用ldply来应用函数AddCalEffect
这是我尝试过的方法之一的简单变化 . 我很难将循环从plyr转移到plyr并应用 . 任何帮助,将不胜感激 .
OptData
这个错误产生了
Error in (function(x, i, exact) if (is.matrix(i)) as.matrix(x)[[i]] else .subset2(x, :
argument "Date" is missing, with no default