列是字符而不是因素有什么好的理由吗?

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

这个想法似乎是一个愚蠢的问题,但在与R合作几个月后,我意识到我经常发现自己将字符串转换为因子,例如,tabulate函数对字符串不起作用。

在这一点上,我正在考虑简单地总是将任何字符串转换为一个因子。但这引出了一个问题,是否有任何理由不(除了对字符串本身进行操作)?

r string type-conversion factors
1个回答
6
投票

因素有双重表现 - '标签';和级别的底层编码。 R使用这些表示中的哪一个可能是微妙和混乱的。

这可能令人困惑的一个例子是子集化。这是一个命名向量,一个字符向量,以及一个默认(按字母顺序排列)级别的因子

x = c(foo = 1, bar = 2)
y = c("bar", "foo")
z = factor(y)        # default levels are "bar", "foo", i.e., alphabetical

通过xy进行子集将字符值与name进行匹配,但xz进行子集化则使用基础级别编码。

> x[y]
bar foo 
  2   1 
> x[z]
foo bar 
  1   2 

这可能会更加混乱,因为R可以在不同的语言环境中工作(例如,我使用的是en_US语言环境 - 美国英语),不同语言环境的排序(排序)顺序可能不同 - 默认级别在不同的语言环境中可能不同。

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.