Задание имен строк в столбце не рекомендуется. Ошибка: недопустимая длина 'row.names' - PullRequest
0 голосов
/ 04 мая 2018

Я пытаюсь составить тепловую карту матрицы мест и видов. Благодаря Maurits Evers за часть этого кода я все еще не могу запустить его без сообщения об ошибке:

Установка имен строк в столбце устарела. Ошибка в row.names<-.data.frame (*tmp*, значение = список (Сайт = c ("AwarukuLower",: недопустимая длина 'row.names'

Было высказано предположение, что проблема может быть в осмотре и толчках. Я удалил пакеты tibble & tidyverse и вместо этого установил пакет readr для devtools. Я все еще получаю то же сообщение об ошибке и не могу понять, как это исправить. Данные прикреплены .

library(readr)
devtools::install_github("tidyverse/readr") #to install readr without tidyverse

bank_mean_wide_sp <- read.csv("/Users/Chloe/Desktop/Environmental Data Analysis/EDA.working.directory/bank_mean_wide.csv")
log_mean_wide_sp <- read_csv("/Users/Chloe/Desktop/Environmental Data Analysis/EDA.working.directory/log_mean_wide.csv")

as.matrix(bank_mean_wide_sp)
as.matrix(log_mean_wide_sp)

Сохранить информацию о сайте в виде имен строк

logdf <- log_mean_wide_sp;
base::row.names(logdf) <- log_mean_wide_sp[, 1];

Удалить нечисловой столбец

logdf <- logdf[, -1];

Используйте as.matrix для преобразования data.frame в матрицу

logmap <- heatmap(
as.matrix(logdf),
col = cm.colors(256),
scale = "column",
margins = c(5, 10),
xlab = "species", ylab = "Site",
main = "heatmap(<Auckland Council MCI data 1999, habitat:bank>, ..., scale = \"column\")")

Возвращает сообщение об ошибке, как указано выше:

Установка имен строк в столбце устарела. Ошибка в row.names<-.data.frame (*tmp*, значение = список (Сайт = c ("AwarukuLower",: недопустимая длина 'row.names'

В качестве альтернативы я попытался запустить код без первых трех строк и использовал as.numeric и as.matrix для преобразования data.frame в числовую матрицу. Это тоже не сработало.

as.matrix(logdf) 
logmap <- heatmap(as.numeric(logdf),
col = cm.colors(256),
scale = "column",
margins = c(5, 10),
xlab = "species", ylab = "Site",
main = "heatmap(<Auckland Council MCI data 1999, habitat:bank>, ..., scale = \"column\")")

Возвращает эту вторую ошибку:

Ошибка в тепловой карте (as.numeric (logdf), col = cm.colors (256), scale = "column",: (список) объект не может быть приведен к типу 'double'

Ответы [ 2 ]

0 голосов
/ 04 мая 2018

Ваши сообщения об ошибках состоят из 2 частей

  1. Установка имен строк в столбце устарела.

Это означает, что установка имен строк в таблице запрещена. Это все еще работает на данный момент, но будет удалено в будущем. Посмотреть это https://github.com/tidyverse/tibble/issues/123.

  1. Ошибка в row.names<-.data.frame (*tmp*, значение = список (Site = c ("AwarukuLower",: недопустимая длина 'row.names'

Это ошибка, говорящая о том, что заданная вами длина row.names не равна общему количеству строк в вашем фрейме данных.

Ошибка в чтении вашего CSV-файла, ваш CSV-файл имеет первый столбец в качестве имени строки, но вы читаете его как обычный столбец. Прочитайте это правильно, используя

log_mean_wide_sp<-read.csv("log_mean_wide.csv",row.names = 1)

Затем выполните следующие шаги, как вы делаете

logdf<-log_mean_wide_sp
logmap <- heatmap(
as.matrix(logdf),
col = cm.colors(256),
scale = "column",
margins = c(5, 10),
xlab = "species", ylab = "Site",
main = "heatmap(<Auckland Council MCI data 1999, habitat:bank>, ..., scale = \"column\")")

Это даст ниже изображение в качестве вывода

enter image description here

0 голосов
/ 04 мая 2018

Я бы порекомендовал создать матричную версию числовой части вашего фрейма данных:

log_mean_mat <- as.matrix(log_mean_wide_sp[,-1])

У вас не должно быть проблем с настройкой имен строк для этого:

row.names(log_mean_mat) <- log_mean_wide_sp[,1]

Я лично настоятельно предпочитаю функцию heatmap.2 для тепловых карт (в пакете gplots) над базовой функцией, но вот что должно работать с использованием базового кода:

heatmap(log_mean_mat,
  col = cm.colors(256),
  scale = "column",
  margins = c(5, 10),
  xlab = "species", ylab = "Site",
  main = "heatmap(<Auckland Council MCI data 1999, habitat:bank>, ..., scale = \"column\")")

Site         Acarina Acroperla Amphipoda Austroclima Austrolestes Ceratopogonidae 
AwarukuLower    0   0   1   0   0   0   
AwarukuMid      1   20  6   0   0   0   
NukumeaLower    0   44  1   0   0   1   
NukumeaUpper    1   139 9   2   1   0   
VaughanLower    1   110 112 1   0   0   
VaughanMid      2   44  12  2   1   0   
...