我对R没有太多的了解。我有一个.txt文件,它带有一个相关矩阵,该矩阵以前是从很长的记录中创建的。
文件中的文本类似于:
"15075060" "15085030" "15085040"
"15075060" 1 0.441716695007761 0.433807683928689
"15085030" 0.441716695007761 1 0.477591938543259
"15085040" 0.433807683928689 0.477591938543259 1
这是一个有代表性的示例,因为实数矩阵要大得多。引号中的数字是相关的来源。 我使用read.table读取数据以创建数据框,然后使用以下命令将其转换为矩阵(称为matto):
mattox =matrix(as.numeric(unlist(matto)),nrow=nrow(matto))
然后我得到一个像这样的矩阵:
>mattox
[,1] [,2] [,3]
[1,] 1.0000000 0.4417167 0.4338077
[2,] 0.4417167 1.0000000 0.4775919
[3,] 0.4338077 0.4775919 1.0000000
作为选项2,如果我使用以下命令将其转换为矩阵:
as.matrix(sapply(matto, as.numeric))
然后我得到一个像这样的矩阵:
> matto
X.15075060 X.15085030 X.15085040
15075060 1.0000000 0.4417167 0.4338077
15085030 0.4417167 1.0000000 0.4775919
15085040 0.4338077 0.4775919 1.0000000
尽管我不知道为什么我要在列标题的数字之前得到那些X
当我尝试使用corrplot函数绘制此相关性时,我得到了矩阵矩阵的类似信息:
corrplot(mattox, type="upper")
但是问题是我在这里看不到列和行的标题(.txt文件中带引号的数字)。对于其他矩阵(matto),当我尝试使用Corrplot时出现错误,错误提示:
Error in matrix(if (is.null(value)) logical() else value, nrow = nr, dimnames = list(rn, :
length of 'dimnames' [2] not equal to array extent
我想获得一个图形,就像我获得的图形一样,但是具有列和行的名称,而不是数字1,2,3 ... 类似于下图,我在网上找到了其他情况:
我该如何解决?
答案 0 :(得分:1)
您可以跳过这些步骤,而在阅读时将其强制转换为矩阵,并且应该已经是数字了。由于有names being duplicates,因此在名称前加上了x
。不过,您可以指定colnames
。
df <- as.matrix(read.table("location/of/text.txt", row.names = 1))
colnames(df) <- c("15075060", "15085030", "15085040")
str(df) # check the structure, it's numeric so we're good
num [1:3, 1:3] 1 0.442 0.434 0.442 1 ...
- attr(*, "dimnames")=List of 2
..$ : chr [1:3] "15075060" "15085030" "15085040"
..$ : chr [1:3] "15075060" "15085030" "15085040"
corrplot(df, type = "upper")