plot.window(...)中的R错误需要有限的' xlim'值

时间:2015-11-04 11:21:21

标签: r plot

我想绘制一个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,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" ...

1 个答案:

答案 0 :(得分:5)

  

但我真的不能y = as.numeric(CO2.data$V2),因为那时每个值都是NA。

plot基本上有同样的问题。

在读取数据时,第一步应该始终是将数据放入适当的格式,然后才进入下一步。您的工作流程总是看起来像这样,几乎没有例外。

在您的情况下,您需要显式转换日期时间和数值,因为R无法自动处理格式转换:

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

特别是,您需要指定日期格式(第一行),并且需要在将字符串转换为数字之前将十进制逗号转换为小数点。

如果您使用read.csv2而不是read.table,则可以指定小数点分隔符;这允许您省略上面的第二次转换:

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

哦,使用FALSETRUE不是 FT - 后者是变量,所以有些代码可以重新定义FT的含义。