You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

R语言中c(...)为何返回数字而非字符串?如何生成目标向量?

为什么用c()合并因子返回数字而非字符串?

嘿,这个问题我太熟悉了!咱们一步步来拆解:

问题根源:你操作的是**因子(factor)**类型

你看到的Location$NamePrint和ParentLocation$NamePrint都是R里的因子类型——这种数据类型看起来像字符串,但底层是用整数存储的,那些数字就是它们在因子水平(Levels)里的位置:

  • 数字36对应Levels里第36个元素,也就是"Burundi"
  • 数字71对应Levels里第71个元素,也就是"Eastern Africa"

当你用c()直接合并两个因子时,R会默认提取它们底层的整数值,而不是显示表面的字符串,所以就返回了[1] 36 71。

解决办法:先转成字符型再合并

要得到包含两个字符串值的向量,只需要先把因子转换成字符类型,再用c()合并:

c(as.character(Location$NamePrint), as.character(ParentLocation$NamePrint))

执行后就会返回:

[1] "Burundi"        "Eastern Africa"

额外小技巧

如果你后续还需要把结果当作因子使用,可以合并后再转回因子:

factor(c(as.character(Location$NamePrint), as.character(ParentLocation$NamePrint)))

另外,如果你的数据是通过read.table/read.csv导入的,在R版本4.0之前,默认会把字符串列转成因子。如果不想遇到这种问题,可以在导入时加上参数:

read.csv("your_file.csv", stringsAsFactors = FALSE)

(R 4.0及以上版本已经默认stringsAsFactors = FALSE,所以不用额外设置啦)

内容的提问来源于stack exchange,提问作者igorjrr

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 07:28:30