web-dev-qa-db-ja.com

ティブルに行名を設定することは非推奨です。エラー:「row.names」の長さが無効です

サイトと種の存在量のマトリックスのヒートマップを作成しようとしています。このコードのいくつかについてMaurits Eversに感謝しますが、エラーメッセージなしではまだ実行できません。

ティブルに行名を設定することは非推奨です。row.names<-.data.frame*tmp*のエラー、値= 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)

サイト情報を行名として保存

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*のエラー、値= 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\")")

この2番目のエラーを返します。

Heatmap(as.numeric(logdf)、col = cm.colors(256)、scale = "column" 、:(list)オブジェクトのエラーは、タイプ 'double'に強制変換できません

3
chloep

エラーメッセージには2つの部分があります

  1. ティブルに行名を設定することは非推奨です。

つまり、tibbleに行名を設定することは非推奨です。現時点ではまだ機能しますが、今後削除される予定です。これを参照してください https://github.com/tidyverse/tibble/issues/12

  1. row.names<-.data.frame*tmp*のエラー、値= list(Site = c( "AwarukuLower"、: 'row.names' length 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\")")

それは出力として以下の画像を与えます

enter image description here

1
Dhawal Kapil

データフレームの数値部分のマトリックスバージョンを作成することをお勧めします。

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   
1
Melissa Key