web-dev-qa-db-ja.com

エラー:次の場合、列インデックスは最大1でなければなりません... heatmap.2

Heatmap.2でエラーを受け取り、ここで同様のエラーを見つけました R:knnImputation Giving Error しかし、まだ答えがありません。私はその問題を理解できなかった。私はこの世界に不慣れです、何か間違いがあれば事前に申し訳ありません。

144行177列のデータフレームdfがあり、2005-2016timeAverage関数openair packageの間の年の月平均を示しています。

ここにdfの小さな例があります:

date        Year  Month  Adana-Catalan  Adana-Dogankent  Adana-Meteoroloji
2008/09/01  2008    9        NaN               NaN               NaN
2008/10/01  2008   10        NaN               NaN            1.7948718
2008/11/01  2008   11        NaN               NaN            2.0909091
2008/12/01  2008   12     1.2694064         12.2384106        0.7272727
2009/01/01  2009    1     2.3150358         12.7479339        10.3779762
2009/02/01  2009    2     2.8241107         18.4320175        2.4494949
2009/03/01  2009    3     2.0401606         8.4597523         1.6529412
2009/04/01  2009    4     1.8604651         4.8560000         1.1267606
2009/05/01  2009    5     2.1087719         1.8202247            NaN
2009/06/01  2009    6     4.0695103         2.1463415         1.1111111
2009/07/01  2009    7     5.4016393         8.1298905            NaN
2009/08/01  2009    8     0.1313869         16.9874411           NaN
2009/09/01  2009    9        NaN            5.3753943            NaN
2009/10/01  2009    10    1.6626506         8.8000000         1.8388889
2009/11/01  2009    11    1.4177632            NaN            3.9879154
2009/12/01  2009    12    0.9644128            NaN            5.0281457
2010/01/01  2010     1    0.2608696        4.0898876          3.1981424
2010/02/01  2010     2    0.7619048            NaN            4.3169811

数値以外の列を削除します。

df.monthly <- df[,-c(1:3)]  #remove non-numeric columns
df.monthly.un <- unlist(df.monthly)  #unlist the list
df.monthly.un[is.nan(df.monthly.un)] <- -999  #replace NaNs with -999

monthly.dim <- dim(df.monthly)
monthly.frame <- matrix(df.monthly.un, monthly.dim)  #convert unlist to matrix

次に、距離行列を計算し、樹状図を作成しました。最後に、heatmap.2を使用して、樹状図を含むヒートマップを作成しました。

monthly.dist <- dist(monthly.frame)
monthly.hclust <- hclust(monthly.dist, method="complete")

monthly.dist2 <- dist(t(monthly.frame))

colClust <- as.dendrogram(hclust(monthly.dist2, method="complete"))
rowClust <- as.dendrogram(monthly.hclust)

colpalette <- colorRampPalette(c("red","blue","green"))(n=100)

heatmap.2(monthly.frame, scale="none",
          col=colpalette, trace= "none", cexRow=0.6, cexCol=1,
          cex.main=0.7, key=T, Rowv=rowClust, labRow=df[,1],
          main=expression("2005-2016 SO"[2] * " (ug/m"^3*")"))

ただし、コードを実行すると、次のエラーが発生します。

Error: Column indexes must be at most 1 if positive, not 22, 23, 24, 25, 21, 18, 19, 20, 16, 17, 12, 10, 11, 15, 13, 14, 3, 9, 8, 4, 7, 5, 6, 2, 124, 125, 121, 122, 123, 133, 132, 131, 134, 135, 126, 129, 127, 128, 130, 136, 137, 143, 144, 141, 142, 138, 139, 140, 57, 58, 55, 56, 42, 47, 41, 40, 36, 38, 37, 39, 46, 43, 44, 45, 34, 35, 26, 27, 28, 29, 30, 31, 32, 33, 59, 54, 53, 48, 49, 50, 51, 112, 116, 117, 114, 115, 88, 89, 52, 60, 63, 70, 75, 73, 74, 79, 77, 76, 78, 66, 67, 62, 65, 71, 64, 61, 72, 97, 87, 85, 86, 90, 98, 91, 83, 84, 92, 94, 96, 93, 95, 68, 69, 82, 80, 81, 113, 110, 111, 109, 118, 119, 120, 101, 105, 103, 104, 99, 106, 100, 102, 107, 108

このエラーが発生する理由はありますか?前もって感謝します!

4
Çelik Termos
  1. このリンクは、KNNを別の方法で行う方法を示しています: https://www.youtube.com/watch?v=u8XvfhBdbMw

  2. また、knnImputation(data)が機能しない理由がわかりません。データフレームをいじってみましたが、現在は機能していますが、なぜ機能するのかはわかりません。

私がしたことは:

mydata <- read_Excel("icecreamdata.xlsx")    #Here I'm importing my data

newdata <- data.frame()   #I've created a blank data frame

newdata <- data.frame(mydata)   #I'm putting the data I want into this new data frame

anyNA(newdata) #Checking for missing data. TRUE = yes, data is missing. FALSE = no, data is not missing.

fixeddata <- knnImputation(newdata)  #Imputing data to a new object

anyNA(fixed data)

FALSE =欠測データはありません

どちらも機能しますが、エラーが発生した理由を専門家から知りたいと思います。正の場合など、列インデックスは最大で1でなければなりません。

1
Kirsty N

報告されたエラーの主な説明はここにあります。

今日問題が発生し、tblオブジェクトをdata.frameオブジェクトに変換する必要があることがわかりました!!これは、異なるパッケージに互換性がないという1つの嫌な点です。

#check your df class,I think your df is actually a tbl object
class(df)
df_new <- as.data.frame(df)
1
Travis