连接列表然后制作箱线图

发布于 2024-12-09 06:21:52 字数 664 浏览 1 评论 0原文

假设我有两个列表:

temp<-c("con.sin.results","sin.results","exp.results")
Temp<-c("[,1:16]","[,17:32]","[,33:48]","[,49:64]")

temp 中的每个变量都包含 1000 个观测值和 64 个变量。我想做的是创建一个双循环,以便我可以根据样本大小创建箱线图(这样每个箱线图将有 16 个框,根据 Temp),即我会得到 boxplot(con. sin.results[,1:16]),然后是 boxplot(con.sin.results[,17:32]) 等。

考虑到这个目标,我得到了以下几点:

for (l in temp){
for (L in Temp){
windows()
par(mfrow=c(2,2))
A<-noquote(paste(noquote(l),noquote(L),sep=""))
boxplot(A)
}
}

不幸的是,这会抛出一个错误对我:

x[floor(d)] + x[ceiling(d)] 中的错误:二进制的非数字参数 运算符

我哪里出错了?我应该调整什么?

Let's say that I have got two lists:

temp<-c("con.sin.results","sin.results","exp.results")
Temp<-c("[,1:16]","[,17:32]","[,33:48]","[,49:64]")

Each of the variables in temp contain 1000 observations and 64 variables. What i am trying to do is create a double loop so that I can create boxplots based on sample size (so that each boxplot would have 16 boxes, as per Temp) i.e I would get boxplot(con.sin.results[,1:16]), then boxplot(con.sin.results[,17:32]) etc.

With this goal in mind, I've gotten to the following point:

for (l in temp){
for (L in Temp){
windows()
par(mfrow=c(2,2))
A<-noquote(paste(noquote(l),noquote(L),sep=""))
boxplot(A)
}
}

Unfortunately, this spits out an error at me:

Error in x[floor(d)] + x[ceiling(d)] : non-numeric argument to binary
operator

Where am I going wrong? What should I adjust?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

挥剑断情 2024-12-16 06:21:52

如果我正确理解你的问题,这或多或少就是你想要的:

bplotforone<-function(mat, groups=list(1:16, 17:32, 33:48, 49:64), newwin=TRUE, mfrow=c(2,2))
{
    nr<-nrow(mat)
    if(newwin) windows()
    par(mfrow=mfrow)
    for(curgroup in groups)
    {
        newres<-as.vector(mat[,curgroup])
        newres<-data.frame(vals=newres, grp=rep(seq_along(curgroup), each=nr))
        boxplot(vals~grp, data=newres)
    }
}

con.sin.results2<-matrix(runif(10*64), ncol=64) #generated some test data here
bplotforone(con.sin.results2)

你现在可以轻松地执行以下操作:

listOfResults<-list(con.sin.results,sin.results,exp.results) #note: no quotes!!
for(curres in listOfResults) bplotforone(curres)

If I understand your question correctly, this is more or less what you want:

bplotforone<-function(mat, groups=list(1:16, 17:32, 33:48, 49:64), newwin=TRUE, mfrow=c(2,2))
{
    nr<-nrow(mat)
    if(newwin) windows()
    par(mfrow=mfrow)
    for(curgroup in groups)
    {
        newres<-as.vector(mat[,curgroup])
        newres<-data.frame(vals=newres, grp=rep(seq_along(curgroup), each=nr))
        boxplot(vals~grp, data=newres)
    }
}

con.sin.results2<-matrix(runif(10*64), ncol=64) #generated some test data here
bplotforone(con.sin.results2)

You can now easily do something like:

listOfResults<-list(con.sin.results,sin.results,exp.results) #note: no quotes!!
for(curres in listOfResults) bplotforone(curres)
空名 2024-12-16 06:21:52

这是我的主管提出的:

temp<-c("con.sin.results","sin.results","exp.results")
N<-c(50,100,250,500)
con.sin.results<-matrix(runif(100*64),100,64)
sin.results<-matrix(runif(100*64),100,64)
exp.results<-matrix(runif(100*64),100,64)

for (I in temp){
  windows()
  par(mfrow=c(2,2))
  for (n in N){
    if (n==50) eval(parse(text=paste("boxplot(",I,"[,1:16])",sep=""))) 
    if (n==100) eval(parse(text=paste("boxplot(",I,"[,17:32])",sep=""))) 
    if (n==250) eval(parse(text=paste("boxplot(",I,"[,33:48])",sep=""))) 
    if (n==500) eval(parse(text=paste("boxplot(",I,"[,49:64])",sep="")))
  }
}

This is what my supervisor came up with:

temp<-c("con.sin.results","sin.results","exp.results")
N<-c(50,100,250,500)
con.sin.results<-matrix(runif(100*64),100,64)
sin.results<-matrix(runif(100*64),100,64)
exp.results<-matrix(runif(100*64),100,64)

for (I in temp){
  windows()
  par(mfrow=c(2,2))
  for (n in N){
    if (n==50) eval(parse(text=paste("boxplot(",I,"[,1:16])",sep=""))) 
    if (n==100) eval(parse(text=paste("boxplot(",I,"[,17:32])",sep=""))) 
    if (n==250) eval(parse(text=paste("boxplot(",I,"[,33:48])",sep=""))) 
    if (n==500) eval(parse(text=paste("boxplot(",I,"[,49:64])",sep="")))
  }
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文