如何将信息从一个数据帧传输到R中的另一个矩阵?

时间:2017-07-14 21:17:09

标签: r matrix

我将一个文本文件上传到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

如果两个输出显然相同,为什么两个输出之间存在差异?

1 个答案:

答案 0 :(得分:1)

使用str()查看对象的结构 - 您很快就会看到您的数据框有一列factor,而您的矩阵最后是{{1}类}。可能您的文本文件是作为integer类导入的(在数据框内),并且您的矩阵默认为另一个类。当您将因子分配给矩阵时,它会被强制转换为整数。

一些解决方案:

  1. 导入文本文件时,请设置factor,使其无法自动转换为stringsAsFactors = FALSE;

  2. 导入时最好修复,但您也可以更正数据框列:factor;

  3. 将您的矩阵初始化为populationNames[, 1] = as.character(populationNames[, 1])类:character;

  4. 其中任何一个都可能解决您的问题。我建议同时做1和3 - 似乎是良好的做法和明确的意图。