R语言 为什么我的字符在我附加到向量时会发生变换?

egdjgwm8  于 2023-07-31  发布在  其他
关注(0)|答案(1)|浏览(79)

我现在正在学习R,并且意识到当我附加到一个因子时,它就变成了一个字符。即使我没有指定因子水平,也会发生这种情况。当我查看数字的顺序时,我看到它们对应于“因子水平”,例如,小是1。但是,我想知道为什么在使用这种方法附加到向量时会发生这种情况。

size_order <- factor(c("small", "medium", "large", "medium", "small", "small"), levels = c("small", "medium", "large"))

size order
> [1] small  medium large  medium small  small 
> Levels: small medium large huge

typeof(size_order)
> integer

字符串
但是当我追加到它的时候,它就变成了一个字符:

size_order <- append(size_order, "small")

size order
> "1"     "2"     "3"     "2"     "1"     "1"     "small"

typeof(size_order)
> [1] "character"

suzh9iv8

suzh9iv81#

?c的文档说明:
这是一个将其参数组合在一起的通用函数。
预设方法会将其参数结合起来,以形成向量。所有参数都被强制转换为返回值的公共类型,并且除名称外的所有属性都将被删除。
请注意,所有属性都被剥离。您正在连接因子和字符。因子在内部存储为整数。这将被强制转换为一个字符,以便将两者结合起来。
若要取得您想要的结果,请考虑胁迫第二个字串在串连之前进行系数化。即

size_order <- factor(c("small", "medium", "large", "medium", "small", "small"), levels = c("small", "medium", "large"))
size_order <- c(size_order, factor('small'))

字符串
其与以下内容相同:

append(size_order, factor('small'))
[1] small  medium large  medium small  small  small 
Levels: small medium large

相关问题