列表中的data.frame和字符串中的调用对象

aat*_*lob 2 r

我想从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但是没有工作.

我只是想开始摆脱糟糕的编程习惯,所以任何建议都非常受欢迎.

Tyl*_*ker 7

为什么要经历这一切.看来你正在做的函数basicStats已经做了.这似乎太简单了,但我认为以下内容为您提供相同的输出:

basicStats(table1.2)[,-1]
Run Code Online (Sandbox Code Playgroud)

  • 是的.这是一个真正阅读帮助页面的人. (5认同)