我想从Tsay的金融时间系列书中复制一张表,并意识到尽管我能够做到这一点,但我的代码看起来很笨拙并且填补了不良做法.我尝试了一下plyr,但对我来说并没有真正起作用.
所以这是我的代码:
library(fBasics)
url= 'http://faculty.chicagobooth.edu/ruey.tsay/teaching/fts3/d-ibm3dx7008.txt'
table1.2 = read.table(url,header=T)
l1=lapply(table1.2,basicStats)
naml1 = names(l1)
datmat = as.data.frame(matrix(0,nrow=nrow(l1$Date),ncol=4))
nams = names(l1)
j=1
for( i in nams){
datmat[,j] = eval(parse(text=paste("l1",i,sep="$")))
j=j+1
}
rownames(datmat)= rownames(l1[[1]])
colnames(datmat)=colnames(table1.2)
Run Code Online (Sandbox Code Playgroud)
我不关心Date的摘要统计,所以就这样摆脱它.
datmat =datmat[,-1]
Run Code Online (Sandbox Code Playgroud)
所以我听说eval(解析(text =应该尽可能避免.我尝试使用函数get但是没有工作.
我只是想开始摆脱糟糕的编程习惯,所以任何建议都非常受欢迎.
为什么要经历这一切.看来你正在做的函数basicStats已经做了.这似乎太简单了,但我认为以下内容为您提供相同的输出:
basicStats(table1.2)[,-1]
Run Code Online (Sandbox Code Playgroud)