1. ホーム
  2. r

[解決済み] plot.window(...) で有限の 'xlim' 値が必要な場合の R エラー。

2022-01-28 10:31:45

質問

data.frameをプロットしたいのですが、以下のエラーが表示されるのが問題です。

Error in plot.window(...) need finite 'xlim' values
In addition: Warning messages:
1: In xy.coords(x, y, xlabel, ylabel, log) : NAs introduced by coercion
2: In xy.coords(x, y, xlabel, ylabel, log) : NAs introduced by coercion
3: In min(x) : no non-missing arguments to min; returning Inf
4: In max(x) : no non-missing arguments to max; returning -Inf
5: In min(x) : no non-missing arguments to min; returning Inf
6: In max(x) : no non-missing arguments to max; returning -Inf

これは私のコードです。

CO2.data = read.table("962RecordedDataCO2.txt",sep=";", stringsAsFactors=F)

x = CO2.data$V1
y = CO2.data$V2

plot(x,y,type="l")

問題は、xとyが文字の値で、これがプロットできないことかと思いました(xは例えば日付や時間です 16.06.2015 20:07:00 のような2重の値で、yは 0,0300 ). しかし、私は本当に y = as.numeric(CO2.data$V2) というのも、すべての値がNAになってしまうからです。

の結果は str(CO2.data)

'data.frame':   24479 obs. of  2 variables:
 $ V1: chr  "15.06.2015 00:01:00" "15.06.2015 00:02:00" "15.06.2015 00:03:00" "15.06.2015 00:04:00" ...
 $ V2: chr  "0,0200" "0,0200" "0,0200" "0,0200" ...

解決方法は?

<ブロッククオート

しかし、実際には y = as.numeric(CO2.data$V2) というのも、すべての値がNAになってしまうからです。

さて plot は本質的に同じ問題を抱えています。

データを読み込むときは、必ず最初にデータを適切な形式に整えてから、次のステップに進むようにします。ワークフローは 常に のようなもので、ほぼ例外はない。

あなたの場合、Rはフォーマット変換を自動的に処理できないので、明示的にdatetimeと数値の変換をする必要があります。

x = strptime(CO2.data$V1, '%d.%m.%Y %H:%M:%S')
y = as.numeric(sub(',', '.', CO2.data$V2))

特に、日付の書式を指定すること(1行目)、文字列を数値に変換する前に小数点のカンマを小数点に変換する必要があることです。

を使用する場合 read.csv2 の代わりに read.table を指定することで、上記の2番目の変換を省略することができます。

CO2.data = read.csv2("962RecordedDataCO2.txt", sep=";", dec = ",", stringsAsFactors=FALSE)

あ、あと FALSETRUE , ない FT - の意味を再定義することができます。 FT .