为什么c(...)
会返回一个数字而不是下面示例中的字符串?
> Location$NamePrint
[1] Burundi
273 Levels: Afghanistan Africa ...
> ParentLocation$NamePrint
[1] Eastern Africa
273 Levels: Afghanistan Africa ...
> c(Location$NamePrint, ParentLocation$NamePrint)
[1] 36 71
这些数字是各级别字符串的位置?
我的目标是使用c(Location$NamePrint, ParentLocation$NamePrint)
答案 0 :(得分:7)
因为它是factor
。例如:
x <- as.factor("a")
c(x)
# [1] 1
要解决此问题,我们可以对待x
as.character
:
x <- as.character("a")
c(x)
# [1] "a"
正如@joran所提到的,forcats
中有一个方便的功能,forcats::fct_c()
。
有关其他信息,请参阅?c
并阅读详细信息部分:
请注意,因子仅通过其内部整数代码处理;一个提案一直在使用:
x <- as.factor("a")
y <- as.factor("b")
c.factor <- function(..., recursive=TRUE) unlist(list(...), recursive=recursive)
c.factor(x, y)
# [1] a b
# Levels: a b
答案 1 :(得分:2)
对象的structure(str()
)会显示它们是因素。
demo1 <- as.factor("Burundi")
demo2 <- as.factor("Eastern Africa")
str(demo1)
见:
> str(demo1)
Factor w/ 1 level "Burundi": 1
所以当你连接它们时,会发生这种情况:
> c(demo1, demo2)
[1] 1 1
如果您想将它们带入带有文字的向量中,请使用as.character
:
> c(as.character(demo1), as.character(demo2))
[1] "Burundi" "Eastern Africa"
甚至更好,对原始载体这样做,例如:
demo1 <- as.character(demo1)