我想自动生成一些ggplots:
通用数据集:
mydata<-data.frame(matrix(rnorm(100),ncol=5))
names(mydata)<-c("Tijd","X1","X2","X3","X4")
Run Code Online (Sandbox Code Playgroud)
指定要包含的变量:
Start=2
Stop=5
Run Code Online (Sandbox Code Playgroud)
列表保存图:
gvec<-vector("list",length=length(Start:Stop))
Run Code Online (Sandbox Code Playgroud)
创建图:
for(i in Start:Stop){
graphy<-ggplot(mydata,aes_string(x="Tijd",y=names(mydata)[i]))+geom_point()+mytheme
gvec[[i-Start+1]]<-graphy
}
Run Code Online (Sandbox Code Playgroud)
保存地块:
for(i in Start:Stop){
tiff(paste0("Test/Residu/Plots/Prei/mydata.",names(mydata)[i],"09.14.tiff"),width=720,height=720)
gvec[[i-Start+1]]
graphics.off()
}
Run Code Online (Sandbox Code Playgroud)
生成图表列表; 我也可以手动保存图表.但是,使用最后一个循环生成的文件都是空白的.我无法弄清楚这个的原因.
根据Roland的建议,我试过,
print(gvec[[i-Start+1]])但我仍然得到空白文件作为输出.
我觉得我错过了一些非常明显的东西,但经过一个小时的摆弄/谷歌搜索,我无法让这个工作.码:
#Generate data from exponential model
xdata<-seq_len(100)
ydata<-2*exp(-2*(xdata+rnorm(100)))
#Fit exponential model to data
firstorder<-function(C0,k){
ynew<-C0*exp(-k*xdata)
RMSE<-sum((ynew-ydata)^2,na.rm=TRUE)
return(RMSE)
}
#Initial parameter values
params<-c(1,1)
#Optimize
optimx(params,firstorder)
Run Code Online (Sandbox Code Playgroud)
optimx.check出错(par,optcfg $ ufn,optcfg $ ugr,optcfg $ uhess,lower,:无法在初始参数下计算函数
我尝试了各种方法来输入参数.
我最近一直在使用lapply和sapply作为我的首选功能.到目前为止这么好,但为什么下面的代码不起作用让我感到困惑.
df<-as.data.frame(matrix(rnorm(50),ncol=5))
names(df)<-c("x1","x2","x3","x4","x5")
df1<-seq_len(10)
ll<-lapply(seq(1,5), function(i) qplot(df1,df[,i]))
Run Code Online (Sandbox Code Playgroud)
我收到错误:
Error in `[.data.frame`(df, , i) : undefined columns selected
Run Code Online (Sandbox Code Playgroud)
好吧,显然我在可重现的代码中犯了一个很不幸的错误.它现在有效,但ll列表中的所有图都是相同的图.当我运行这个:
do.call(grid.arrange,ll)
我得到以下图像:

所有的情节都是一样的!这也是我通过数据运行时获得的输出.
我遇到了最奇怪的问题.以下代码不再有效:
Test<-matrix(rnorm(9),ncol=3)
colnames(Test)<-c("a","b","c")
write.table(Test,file="Test.txt")
d<-read.table("Test.txt",header=T)
Run Code Online (Sandbox Code Playgroud)
我得到:错误!标题:无效的参数类型
我尝试重新启动R,它没有帮助.
我在R中非常环保,所以可能有一个非常简单的解决方案:
我想计算方阵中列向量之间的平均相关性:
x<-matrix(rnorm(10000),ncol=100)
aux<-matrix(seq(1,10000))
loop<-sapply(aux,function(i,j) cov(x[,i],x[,j])
cor_x<-mean(loop)
Run Code Online (Sandbox Code Playgroud)
在评估sapply行时,我得到错误'下标超出界限'.我知道我可以通过脚本执行此操作但是有没有办法在一行代码中实现这一点?