R语言中移除向量双引号及解决索引返回NA问题的方法
嘿,我来帮你搞定这个R语言的问题!你的核心困扰是向量wspólne里混合了数值类型和带引号的字符类型元素,导致用它索引waga_linków时全返回NA——其实解决起来很直接,我们只需要把整个向量统一转换成数值类型,双引号会自动消失,同时索引也能正常工作。
问题根源
你的wspólne向量里既有像1、29这样的数值元素,又有像"1"、"29"这样的字符元素。当R处理索引时,会把整个向量强制转换成字符型(因为存在字符元素),但waga_linków的索引应该是数值型的,类型不匹配就会返回NA。
解决代码
直接使用as.numeric()函数将整个向量转换为数值型,带引号的字符会被自动解析为对应的数值,双引号也就不复存在了:
# 转换向量为数值型,自动移除双引号 wspólne_clean <- as.numeric(wspólne) # 用清理后的向量索引waga_linków result <- waga_linków[wspólne_clean]
为什么这能生效?
- 对于原本就是数值的元素,
as.numeric()不会改变它们的值; - 对于带引号的字符元素(比如
"31"、"12"),as.numeric()会自动去掉引号并转换为对应的数值; - 转换后的向量全是数值型,和
waga_linków的索引类型完全匹配,就能正确取出对应位置的值了。
可选验证步骤
如果你想确认转换后的向量是否符合预期,可以打印出来检查:
print(wspólne_clean) # 输出结果会是:1 1 29 1 0 37 1 45 1 1 29 1 0 37 1 45 31 12 2 32 25
内容的提问来源于stack exchange,提问作者Nerson48
相关产品推荐
相关产品推荐

