我现在正在学习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"

推荐答案

?c个项目的文档说明:

将值合并到向量或列表中 描述 这是一个组合了其参数的泛型函数.

默认方法将其参数组合成一个向量.All arguments are coerced to a common type which is the type of the returned value, and all attributes except names are removed.

请注意,所有属性都被剥离了.您正在连接一个因子和一个字符.因子在内部存储为整数.这将被强制为一个角色,以便将两者结合起来.

要获得您想要的结果,请考虑在连接之前强制第二个字符串进行因数分解.IE

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

R相关问答推荐

按列A中的值进行子集化,并获得列C中对应于R中列B的最大值行的值?使用循环自动化此操作

如何在热图中绘制一个图形,但在每个单元格中通过饼形图显示?

根据固定值范围在tible中添加新行

管道末端运行功能

更改编号列表的 colored颜色

在使用ggroove后,将图例合并在gplot中

如何利用模型函数在格图中添加双曲/指数曲线

更改默认系列1以更改名称

当两个图层映射到相同的美学时,隐藏一个图层的图例值

如果第一个列表中的元素等于第二个列表的元素,则替换为第三个列表的元素

在df中保留原始变量和新变量

将文件保存到新文件夹时,切换r设置以不必创建目录

按多列统计频次

如何使这些react 表对象相互独立?

我们如何在R中透视数据并在之后添加计算

如果COLSUM为>;0,则COLNAME为向量

如何对r中包含特定(未知)文本的行求和?

如何构建一个for循环来循环处理动物ID?

快速合并R内的值

当由base::限定时,`[.factor`引发NextMethod错误