我不完全确定用R ...中的绘图功能来说明我的问题是什么?
在我的原始数据集中,我有一个名为age的变量,具有以下级别:15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,2X,30 ,40,50,60。当我用年龄绘制年龄时:
/swagger
然后我会得到这个图(一个条形图,其中x轴为年龄,y轴为观察数):
然后我从数据中移除了2X(对于20多岁的人),并使用上面相同的代码来获取新的情节。当我重新运行代码时,情节现在看起来像这样(y轴上有年龄的图):
如果有任何想法为什么情节现在在y轴上有年龄,请告诉我!提前感谢您的帮助!
答案 0 :(得分: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
识别为不同的类。