提问人:User 提问时间:7/27/2023 最后编辑:divibisanUser 更新时间:7/27/2023 访问量:24
为什么当我附加到向量时,我的字符会变换?
Why do my characters transform when I append to a vector?
问:
我现在正在学习 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"
答:
2赞
Onyambu
7/27/2023
#1
文档指出:?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
上一个:在 R 中的函数中使用 plot_ly 时如何维护因子
下一个:雨云图上的缩放问题
评论
c(size_order, factor("small"))