Error: Column indexes must be at most 1 if... heatmap.2
Solution 1
This link shows you how to do KNN another way: https://www.youtube.com/watch?v=u8XvfhBdbMw
Also, I don't understand why the knnImputation(data) won't work - although I have played around with the data frame and now it does work - even though I don't know why it works now.
What I did was:
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 = There is now no missing data
Both work, but I'd also like to know from the experts why we got the error: column indexes must be at most 1 if positive etc.
Solution 2
The primary explanation for the error reported can be found here.
I came into the problem today,and I found that we should transform our tbl
object into data.frame
object!!This is one disgusting point that different packages do not have compatibility.
#check your df class,I think your df is actually a tbl object
class(df)
df_new <- as.data.frame(df)
![Çelik Termos](https://lh3.googleusercontent.com/-NfG8oKT4lDc/AAAAAAAAAAI/AAAAAAAAACI/u3djkhmXxhQ/photo.jpg?sz=256)
Çelik Termos
Updated on June 28, 2022Comments
-
Çelik Termos about 2 years
I received an error in heatmap.2, and I found similar error here R : knnImputation Giving Error but it doesn't have an answer yet. I couldn't understand the problem. I am new to this world, sorry in advance if there is any mistake.
I have a dataframe
df
with 144 rows,177 columns which shows the monthly averages of years between2005-2016
bytimeAverage
functionopenair package
.Here the small example from
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
remove non-numeric columns:
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
then I calculated distance matrix and produced dendograms. Finally, I used
heatmap.2
to produce heatmap with dendograms.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*")"))
However, when I run the code, it gives the error:
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
Any idea why this error occurs? Thanks in advance!