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

R 绘图问题-错误地将因子变量处理为数字,r,plot,graph,graphing,R,Plot,Graph,Graphing,我不完全确定我在R中的绘图函数中遇到的问题的名称 在我最初的数据集中,我有一个名为“年龄”的变量,其级别为: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多岁的人),并使用上面相同的代码得

我不完全确定我在R中的绘图函数中遇到的问题的名称

在我最初的数据集中,我有一个名为“年龄”的变量,其级别为: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轴上有年龄有任何想法,请告诉我!提前感谢您的帮助

诊断性

您将遇到S3方法分派问题<代码>绘图是一个通用功能:

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*     
上面的评论要求您在删除
2X
之前和之后提供
str(age)
,因为这些信息有助于告诉您在调用
plot
时调度了哪个方法

当您有
2X
数据时,
年龄无疑是一个因素。因此,当您调用
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将在读入数据时将年龄识别为不同的类别。

您是如何“删除2X”的?年龄是多少?在你移除2X之前和之后它是否改变了等级?
str(年龄)
前后是什么样子?如果你能重复地分享少量的数据——足以说明问题——这将大大有助于解决这个问题。有关重复共享数据的提示。我删除了原始Excel文件中的“2X”点,然后保存了一个新的.txt文件。在删除“2x”点之前,
str(年龄)
输出为:
因子w/22水平“15”、“16”、“17”…:1 2…
。移除“2x”点后,
str(age)
输出为:
int[1:45816]15…
。我也将尝试根据这些指导原则准备一些数据!我仍然不清楚如何获得
绘图。默认值
以生成特定的散点图?我将数据存储在一个
.txt
文件中,并通过
read.table()
@ZheyuanLi()读取数据:我点击了灰色的勾号(向上箭头),它投了一票,但没有变成绿色。我错过什么了吗?