不推荐在 tibble 上设置行名称。错误:无效的“row.names”长度

chl*_*oep 5 r heatmap readr tidyverse tibble

我正在尝试制作站点与物种丰度矩阵的热图。感谢 Maurits Evers 提供的部分代码,我仍然无法在没有错误消息的情况下运行它:

不推荐在tibble上设置行名称。 row.names<-.data.frame( *tmp*, value = list(Site = c("AwarukuLower", : invalid 'row.names' length) 中的错误

有人建议 tidyverse 和 tibbles 可能是问题所在。我卸载了包 tibble & tidyverse 并安装了 devtools readr 包。我仍然收到相同的错误消息,无法弄清楚如何解决这个问题。附上资料

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)
Run Code Online (Sandbox Code Playgroud)

将站点信息存储为行名

logdf <- log_mean_wide_sp;
base::row.names(logdf) <- log_mean_wide_sp[, 1];
Run Code Online (Sandbox Code Playgroud)

删除非数字列

logdf <- logdf[, -1];
Run Code Online (Sandbox Code Playgroud)

使用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\")")
Run Code Online (Sandbox Code Playgroud)

返回上面提到的错误信息:

不推荐在tibble上设置行名称。 row.names<-.data.frame( *tmp*, value = list(Site = c("AwarukuLower", : invalid 'row.names' length) 中的错误

或者,我尝试在没有前 3 行的情况下运行代码,并使用 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\")")
Run Code Online (Sandbox Code Playgroud)

返回第二个错误:

热图错误(as.numeric(logdf),col = cm.colors(256),比例=“列”,:(列表)对象不能被强制输入'double'

Dha*_*pil 5

您的错误消息有两部分

  1. 不推荐在 tibble 上设置行名称。

这意味着不推荐在 tibble 上设置行名称。它现在仍然有效,但将来会被删除。请参阅此https://github.com/tidyverse/tibble/issues/123

  1. row.names<-.data.frame( *tmp*、 value = list(Site = c("AwarukuLower", : 无效的 'row.names' 长度)中出错

这是错误,表示您设置的 row.names 的长度不等于数据框中的总行数。

错误在于读取 csv 文件时,您的 csv 文件将第一列作为行名称,但您将其作为普通列读取。使用正确阅读

log_mean_wide_sp<-read.csv("log_mean_wide.csv",row.names = 1)
Run Code Online (Sandbox Code Playgroud)

然后按照您正在做的那样执行以下步骤

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\")")
Run Code Online (Sandbox Code Playgroud)

它将给出下面的图像作为输出

在此输入图像描述