绘图问题 - 错误处理因子变量为数字

问题描述 投票:1回答:1

我不完全确定用R中的绘图功能来说明我的问题是什么...

在我的原始数据集中,我有一个名为age的变量,具有以下级别:15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,2X,30,40, 50,60。当我使用以下情节绘制年龄:

plot(age, xlab="Age", ylab="Number of observations")

然后我会得到这个图(一个条形图,其中x轴为年龄,y轴为观察数):

然后我从数据中删除了2X(对于20多岁的某些人)并使用上面相同的代码来获取新的情节。当我重新运行代码时,情节现在看起来像这样(y轴上的年龄图):

如果有人对于为什么情节现在在y轴上有年龄有任何想法,请告诉我!预先感谢您的帮助!

r plot graph graphing
1个回答
1
投票

诊断

您正在进入S3方法调度问题。 plot是一个通用函数:

methods(plot)
# [1] plot.acf*           plot.data.frame*    plot.decomposed.ts*
# [4] plot.default        plot.dendrogram*    plot.density*      
# [7] plot.ecdf           plot.factor*        plot.formula*      
#[10] plot.function       plot.hclust*        plot.histogram*    
#[13] plot.HoltWinters*   plot.isoreg*        plot.lm*           
#[16] plot.medpolish*     plot.mlm*           plot.ppr*          
#[19] plot.prcomp*        plot.princomp*      plot.profile.nls*  
#[22] plot.raster*        plot.spec*          plot.stepfun       
#[25] plot.stl*           plot.table*         plot.ts            
#[28] plot.tskernel*      plot.TukeyHSD*     

上面的评论要求你在删除str(age)之前和之后提供2X,因为这些信息有助于说明调用plot时调度的方法。

当你有2X数据时,age绝对是一个因素。因此,当您调用plot时,会调用plot.factor并生成条形图。

当你删除2X时,似乎age不知何故变成了一个数值变量。因此,当你调用plot时,会调用plot.default并生成散点图,在这种情况下,plot(age)基本上是在执行plot.default(1:length(age), age)


一种绝对有效的方法是

plot(factor(age), xlab="Age", ylab="Number of observations")

但是,我仍然很好奇你如何删除2X子集,以便age成为数字。通常,如果age是R中的因子变量,则删除子集不会更改变量类。

据推测,age存储在.txt.csv文件中,您可以通过scan()read.table()read.csv()阅读它。当您删除2X时,您在这些文件中删除它们并再次将数据读入R.通过这种方式,R将在数据读入时将age识别为不同的类。

© www.soinside.com 2019 - 2024. All rights reserved.