从R中的数据帧子集列

从R中的数据帧子集列,r,factors,R,Factors,关于R中的子集列,我有一个相对简单的问题 我有两个数据帧,dat1和dat2: >dat1 cities countries areakm2 populationk 1 Shanghai China 2643 21766 2 Beijing China 1368 21500 3 NYC USA Unknown 8406 4 LA USA 130

关于R中的子集列,我有一个相对简单的问题

我有两个数据帧,dat1和dat2:

>dat1
      cities countries areakm2 populationk
1   Shanghai     China    2643       21766
2    Beijing     China    1368       21500
3        NYC       USA Unknown        8406
4         LA       USA    1302        3884
5     London        UK    1737     Unknown
6 Manchester        UK     116         255

> dat2
  Ozone Solar.R Wind Temp Month Day
1    41     190  7.4   67     5   1
2    36     118  8.0   72     5   2
3    12     149 12.6   74     5   3
4    18     313 11.5   62     5   4
5    NA      NA 14.3   56     5   5
然后,如果我想从dat1中子集第一列,我会得到以下结果:

> dat1[,1]
[1] Shanghai   Beijing    NYC        LA         London     Manchester
Levels: Beijing LA London Manchester NYC Shanghai
> class(dat1[,1])
[1] "factor
然而,如果我对dat2做同样的事情,我会得到一个向量,而不是一个因子

> dat2[,1]
[1] 41 36 12 18 NA
> class(dat2[,1])
[1] "integer"
我不明白这两种情况有什么区别。我假设这与数据类型有关(在dat1中,第一列由字符组成,而在dat2中,第一列由整数组成)


谢谢

事实上两者都是向量。一个因子和一个整数。如果希望R将它们视为字符(另一种类型,如因子或整数),则应使用

stringsAsFactors=FALSE


在创建data.frame时,我想知道为什么在这些情况下R显示的输出不同?这是R显示因子向量的方式,它显示的是底层水平。但在进一步的计算中,他们将以同样的方式处理。谢谢!现在,我可以接受了