我在功能声明中没有成功地将lapply,substitute,print,plot和list结合起来。有人可以指导我修改这段代码吗?我想:
字段是数字。感谢。
brg<-as.data.frame(sqlFetch(channel,"Bearing"))
is.data.frame(brg)
varlist<-names(brg)[c(6,8,10,12)]
varlist
pdf(file="brg%d.pdf")
figures<-lapply(varlist,function(x) {
print(plot(substitute(brg[c(1,i)], (list(i = as.name(x))))))
})
更新:感谢您的评论。以下是此代码的两个工作版本,其中包含轴标签(df从SQL Server读取,如下所示):
#vers. 1
brg<-as.data.frame(sqlFetch(channel,"Bearing"))
is.data.frame(brg)
dim(brg)
head(brg)
names(brg)<-tolower(names(brg))
names(brg)
varlist<-names(brg)[c(6,8,10,12)]
varlist
pdf(file="brgd.pdf")
for (x in varlist) plot(brg[,1],brg[,x], xlab=names(brg[1]),ylab=as.name (x))
dev.off()
#vers. 2
brg<-as.data.frame(sqlFetch(channel,"Bearing"))
is.data.frame(brg)
dim(brg)
head(brg)
names(brg)<-tolower(names(brg))
names(brg)
varlist<-names(brg)[c(6,8,10,12)]
varlist
pdf(file="brg1.pdf")
figures<-lapply(varlist,function(x) {
(plot(brg[,1],brg[,x], ylab=as.name(x)))
})
dev.off()
答案 0 :(得分:1)
目前还不清楚你想做什么,但我仍然对你的代码有一些评论。我想你在这里尝试复杂化一个简单的任务,绘制一些变量并将图表保存在文件中。
substitute
(它会给出符号),您可以使用列名称对data.frame进行子集化。lapply
,因为您不保存结果,只是想重复绘图。您必须在绘图解锁后关闭设备。
brg<- data.frame(a=rnorm(10),b= rnorm(10), ## a reproducible data frame
c=rnorm(10))
varlist<-names(brg)[c(1,2)]
pdf(file="brgd.pdf")
for (x in varlist) plot(brg[,1],brg[x]) ## the substitue would give brg[c(1,a)] !!
dev.off()