Setting row names on a tibble is deprecated. Error: invalid 'row.names' length
Setting row names on a tibble is deprecated. Error: invalid 'row.names' length
我正在尝试制作站点与物种丰度矩阵的热图。感谢 Maurits Evers 提供的部分代码,我仍然无法 运行 它没有错误消息:
Setting row names on a tibble is deprecated.Error in
row.names<-.data.frame
(*tmp*
, value = list(Site =
c("AwarukuLower", : invalid 'row.names' length
有人建议 tidyverse 和 tibbles 可能是问题所在。我卸载了 tibble & tidyverse 包并安装了 devtools readr 包。我仍然收到相同的错误消息,无法弄清楚如何解决这个问题。 Data attached.
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\")")
Returns 报错信息如上:
Setting row names on a tibble is deprecated.Error in
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\")")
Returns 第二个错误:
Error in heatmap(as.numeric(logdf), col = cm.colors(256), scale =
"column", : (list) object cannot be coerced to type 'double'
我建议创建数据框数字部分的矩阵版本:
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
您的错误消息包含 2 个部分
- Setting row names on a tibble is deprecated.
这意味着在 tibble 上设置行名称已被弃用。它现在仍然有效,但将来会被删除。看到这个 https://github.com/tidyverse/tibble/issues/123.
- Error in
row.names<-.data.frame
(*tmp*
, value = list(Site = c("AwarukuLower", : invalid 'row.names' length
这是一个错误,表示您设置的 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\")")
它会给出下图作为输出
我收到了同样的错误消息,在我的情况下,我只是将我的文件从 .xlsx 更改为 .csv...这很好。
但在您的情况下,您正在创建数据框...所以它不起作用嘿嘿嘿
把它留在这里以备不时之需。 :)
我正在尝试制作站点与物种丰度矩阵的热图。感谢 Maurits Evers 提供的部分代码,我仍然无法 运行 它没有错误消息:
Setting row names on a tibble is deprecated.Error in
row.names<-.data.frame
(*tmp*
, value = list(Site = c("AwarukuLower", : invalid 'row.names' length
有人建议 tidyverse 和 tibbles 可能是问题所在。我卸载了 tibble & tidyverse 包并安装了 devtools readr 包。我仍然收到相同的错误消息,无法弄清楚如何解决这个问题。 Data attached.
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\")")
Returns 报错信息如上:
Setting row names on a tibble is deprecated.Error in
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\")")
Returns 第二个错误:
Error in heatmap(as.numeric(logdf), col = cm.colors(256), scale = "column", : (list) object cannot be coerced to type 'double'
我建议创建数据框数字部分的矩阵版本:
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
您的错误消息包含 2 个部分
- Setting row names on a tibble is deprecated.
这意味着在 tibble 上设置行名称已被弃用。它现在仍然有效,但将来会被删除。看到这个 https://github.com/tidyverse/tibble/issues/123.
- Error in
row.names<-.data.frame
(*tmp*
, value = list(Site = c("AwarukuLower", : invalid 'row.names' length
这是一个错误,表示您设置的 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\")")
它会给出下图作为输出
我收到了同样的错误消息,在我的情况下,我只是将我的文件从 .xlsx 更改为 .csv...这很好。
但在您的情况下,您正在创建数据框...所以它不起作用嘿嘿嘿
把它留在这里以备不时之需。 :)