1

6 つのテキスト ファイル (それぞれ改行で区切られた数字を含む) からデータを取得しています。

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 つの箱ひげ図を並べて 1 つのプロットを作成したいと考えています。同様の質問に相談しましたが、成功しませんでした。

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.txtt1.txtt2.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
4

2 に答える 2

1

data.frameデータを からに変換すると問題が発生するようですmatrix。data.frames のリストを作成しますc(t0,t1,t2)が、数値のみが必要です。

したがって、列に直接アクセスして、data.frame から各要素を抽出する必要があります。

matrix(c(t0$V1, t1$V1, t2$V1), ncol=3)

または、次を使用できますunlist

matrix(unlist(c(t0, t1, t2)), ncol=3)

または、このすべての問題を回避するには、次のように置き換えread.tableますscan

t0 <- scan("t0.txt")
于 2013-07-24T18:00:26.967 に答える