построение корреляционной матрицы в R - PullRequest
0 голосов
/ 26 июня 2018

Я не очень разбираюсь в 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, я получаю что-то вроде этого для матрицы mattox:

corrplot(mattox, type="upper")

enter image description here но проблема в том, что я не вижу здесь названия заголовков столбцов и строк (числа в кавычках из файла .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 ... что-то вроде следующего графика, который я нашел онлайн для другого случая:

enter image description here

как я могу это исправить?

1 Ответ

0 голосов
/ 26 июня 2018

Вы можете пропустить эти шаги и просто привести их к матрице при чтении, и она должна быть уже числовой. Он добавляет к именам 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")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...