我将一个文本文件上传到R中,名为populationNames,如下所示:
Abkhasian
Adygei
Algerian
Altaian
Armenian
AshkenaziJewish
Azerbaijani
我在R:
中对此进行了编码outputTable <- matrix(nrow = 102, ncol = 3)
print(populationNames[5,1]) #this outputs "Armenian"
outputTable[1,1] = populationNames[5,1]
print(outputTable[1,1])#This outputs 5
如果两个输出显然相同,为什么两个输出之间存在差异?
答案 0 :(得分:1)
使用str()
查看对象的结构 - 您很快就会看到您的数据框有一列factor
,而您的矩阵最后是{{1}类}。可能您的文本文件是作为integer
类导入的(在数据框内),并且您的矩阵默认为另一个类。当您将因子分配给矩阵时,它会被强制转换为整数。
一些解决方案:
导入文本文件时,请设置factor
,使其无法自动转换为stringsAsFactors = FALSE
;
导入时最好修复,但您也可以更正数据框列:factor
;
将您的矩阵初始化为populationNames[, 1] = as.character(populationNames[, 1])
类:character
;
其中任何一个都可能解决您的问题。我建议同时做1和3 - 似乎是良好的做法和明确的意图。