yes, rnames <- data[,1] will extract the content of the first column, not the first row. That would be achieved with rnames <- data[1,].
Hi,
I am trying to create a heatmap.
Before I need to transform my dataset:
data <- heatmap_data
rnames <- data[,1] # assign labels in column 1 to "rnames"
mat_data <- data.matrix(data[,2:ncol(data)]) # transform columns (I have) into a matrix
rownames(mat_data) <- rnames # assign row names
But when I run the last one I get this error message:
Error in dimnames(x) <- dn :
length of 'dimnames' [1] not equal to array extent
If I do:
head(data)
ID s21 s22 s23 s24 s25 s31 s32 s33 s34 s35
<chr> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
1 TRINITY_DN34816_c1_g1_i2 0.233 0 1.31 0.127 0.822 2.06 1.44 0.749 1.79 2.61
2 TRINITY_DN10000_c0_g1_i1 3.01 1.78 1.38 0.798 0.855 3.18 2.99 3.54 3.05 1.20
3 TRINITY_DN100041_c0_g1_i1 3.66 2.80 2.14 1.21 1.26 3.83 3.85 4.27 3.76 1.98
4 TRINITY_DN100086_c0_g1_i1 0.556 0.438 0.176 0.145 0.03 0.533 0.511 0.524 0.344 0.134
5 TRINITY_DN19297_c0_g1_i1 0.559 0.23 0.224 0.11 0.024 1.12 1.08 2.08 2.05 0.56
6 TRINITY_DN133973_c0_g1 0 0.275 0 0 0 2.48 0.964 2.18 0.8 1.34
and
head(mat_data)
s21 s22 s23 s24 s25 s31 s32 s33 s34 s35
[1,] 0.233 0.000 1.309 0.127 0.822 2.062 1.435 0.749 1.788 2.610
[3,] 3.664 2.799 2.137 1.207 1.258 3.828 3.849 4.269 3.760 1.984
[4,] 0.556 0.438 0.176 0.145 0.030 0.533 0.511 0.524 0.344 0.134
[5,] 0.559 0.230 0.224 0.110 0.024 1.118 1.085 2.084 2.046 0.560
[6,] 0.000 0.275 0.000 0.000 0.000 2.477 0.964 2.176 0.800 1.340
How can I solve this problem?
2 answers
Solved!
It was a problem with the title of the first column :)
Hello,
Could you please elaborate a little bit about how to fix this issue with the title of the first column. I am stuck with this issue for the last couple of days!
Hi,
I'm not really sure what is meant with "problem with the title of the first column", but you could run rnames <- data$X1 where X1 is the title of the first column (if your first column name (row 1, column 1) is empty R will call it X1), instead of rnames <- data[,1]. This will give rnames right object form for next step.
The reason for the error is because the data was not classified as data.frame I solved this by adding a new line in the syntax.
data <- heatmap_data
data<-as.data.frame(data) # New line added
rnames <- data[,1] # assign labels in column 1 to "rnames"
mat_data <- data.matrix(data[,2:ncol(data)]) # transform columns (I have) into a matrix
rownames(mat_data) <- rnames # assign row names
Log in to answer this question.
Make your problem reproducible, your code works fine with below example dataframe: