我从六个文本文件(每个包含由换行符分隔的数字)中获取数据:
args <- commandArgs(trailingOnly = TRUE)
t0 <- read.table(paste("2_",args[1],".txt",sep=""), header=FALSE, sep="\n")
t1 <- read.table(paste("4_",args[1],".txt",sep=""), header=FALSE, sep="\n")
t2 <- read.table(paste("6_",args[1],".txt",sep=""), header=FALSE, sep="\n")
t3 <- read.table(paste("8_",args[1],".txt",sep=""), header=FALSE, sep="\n")
t4 <- read.table(paste("10_",args[1],".txt",sep=""), header=FALSE, sep="\n")
t5 <- read.table(paste("12_",args[1],".txt",sep=""), header=FALSE, sep="\n")
我想使用相同的 y 轴并排创建一个带有 6 个箱线图的图。我咨询了一个类似的问题,但没有成功。
times <- matrix(c(t0,t1,t2,t3,t4,t5), ncol=6)
png(paste(args[1],".png",sep=""))
boxplot(x = as.list(as.data.frame(times)))
dev.off()
这会产生以下错误:
Error in sort.int(x, na.last = na.last, decreasing = decreasing, ...) :
'x' must be atomic
Calls: boxplot ... boxplot.stats -> <Anonymous> -> sort -> sort.default -> sort.int
我很难理解我哪里出错了。如果有人可以指导我写路径或提出实现目标的替代方法,将不胜感激。
谢谢你。
编辑
以下是可重现的示例,应要求提供。
c_graph.r
:
#!/usr/bin/env Rscript
t0 <- read.table("t0.txt",header=FALSE, sep="\n")
t1 <- read.table("t1.txt",header=FALSE, sep="\n")
t2 <- read.table("t2.txt",header=FALSE, sep="\n")
times <- matrix(c(t0,t1,t2), ncol=3)
png("test.png")
boxplot(x = as.list(as.data.frame(times)))
dev.off()
t0.txt
, t1.txt
, t2.txt
(内容相同):
5287
5287
58
2
525
8
758
7587
587
运行代码:
Rscript c_graph.r
结果:
Error in sort.int(x, na.last = na.last, decreasing = decreasing, ...) :
'x' must be atomic
Calls: boxplot ... boxplot.stats -> <Anonymous> -> sort -> sort.default -> sort.int