R:报错“Error in gzfile(file, “wb“) : 无法打开链结”,“‘x‘ must be numeric”及中文路径下利用dev.new()绘图

目的:利用R绘制分布图形

利用以下代码绘制密度分布图时,报错如下:

iris_data <- iris[,-5] #新的数据集iris_data
iris_PCA <- prcomp(iris_data, center = T, scale = T, retx = T)
plot(density(iris_PCA)) #iris_PCA为进行主成分分析后的数据,该数据集中的“X”为所需数据

首先,报错内容提示“x”应为数值类型

Error in density.default(iris_PCA) : argument 'x' must be numeric

根据以上报错内容提示,利用class()查看x的数据类型:

#为了方便读取,将x数据提取赋值给新变量
a <- iris_PCA[["x"]]
#查看类型
> class(a)
[1] "matrix" "array" 
#数据类型转换并画图
a <- as.numeric(iris_PCA[["x"]])
> class(a)
[1] "numeric" #已转换为数值类型
> plot(density(a))
Error in gzfile(file, "wb") : 无法打开链结
此外: Warning message:
In gzfile(file, "wb") :
  无法打开压缩文件'C:/Users/????/AppData/Local/Temp/RtmpiwdvaE/rs-graphics-1a41fb43-dbb4-4382-a1b7-8dee81c0c5b9/3b27273f-e0c0-4261-b835-c69985050abb.snapshot',可能是因为'Invalid argument'
Graphics error: Plot rendering error

再次报错,提示“Error in gzfile(file, “wb”) : 无法打开链结”并且路径中用户名称用“???”代替,推测原因是因为安装路径下,用户名为中文,导致画图失败(无法建立系统生成的临时数据画图的存储,所以无法访问到系统的snapshot文件)。

上网查询后的解决方法:
1, 建立一个英文账户,并修改环境变量
参考:R语言中的 “Error in gzfile(file, “wb”) :cannot open the connection” 异常处理总结

2,在“plot(density(a))”前加windows()

windows(plot(density(a)))

同样报错,未解决

3,通过dev.new()方法解决

dev.new()
plot(density(a))

问题解决,也验证了是中文路径导致错误。

你可能感兴趣的:(R)