Data.Matrix

Wie rufe ich R-Funktionen auf, wie selektiere ich Daten, ich weiß nicht genau ....

Moderatoren: EDi, jogo

Kaesetoast

Data.Matrix

Beitrag von Kaesetoast »

Hallo liebe Leute,

ich habe ein kleines Problem, was für die meisten wahrscheinlich trivial ist. Ich bin jedoch blutiger Anfänger was R und programmieren im allgemeinen angeht.

Ich möchte eine Heatmap erstellen.
Dafür lade ich meine .csv Datei per
Cacna <- read.csv("Cacna.csv")
hoch. Um meine Heatmap zu erstellen muss ich diese in eine Datenmatrix umwandeln. Dafür benutze ich den Befehl
x <- data.matrix(Cacna)
Hier mein Problem: In der Datei bleibt die Beschriftung der Zeilen (also die senkrechte) bestehen (was ich gut finde) aber aus meiner Beschriftung für jede Zeile macht er Zahlen is semisinnvoller Reihenfolge.
Auf Youtube konnte ich leider keine hilfe finden, da bei dem Tutorial, was ich angeschaut habe, das Problem von vornherein nicht auftritt (ihre Beschriftung der Zeilen bleibt einfach direkt bestehen).

Viele Grüße
Kaesetoast
Benutzeravatar
student
Beiträge: 674
Registriert: Fr Okt 07, 2016 9:52 am

Re: Data.Matrix

Beitrag von student »

Hallo Kaesetoast,

ich gehe davon aus, dass Du die Zugriffsmethode auf Matrixelement kennst. Du möchtest die Beschriftung der Matrix loswerden, wie hier in dem folgenden Beispiel?

Code: Alles auswählen

> Quadratmatrix
   S1 S2 S3 S4 S5
Z1  2  1  2  2  3
Z2  3  7  4  3  5
Z3  5  6  6  5  6
Z4  5  7  7  6  7
Z5  3  2  3  7  8
> rownames(Quadratmatrix) <- NULL
> Quadratmatrix
     S1 S2 S3 S4 S5
[1,]  2  1  2  2  3
[2,]  3  7  4  3  5
[3,]  5  6  6  5  6
[4,]  5  7  7  6  7
[5,]  3  2  3  7  8
> colnames(Quadratmatrix) <- NULL
> Quadratmatrix
     [,1] [,2] [,3] [,4] [,5]
[1,]    2    1    2    2    3
[2,]    3    7    4    3    5
[3,]    5    6    6    5    6
[4,]    5    7    7    6    7
[5,]    3    2    3    7    8
Viele Grüße,
Student
-----------------------------------------------------------------------------------------------------------------------
faes.de, Datenanalyse mit R & das Ad-Oculos-Projekt
Das Ad-Oculos-Projekt auf YouTube

Habe Mut, dich deines eigenen Verstandes zu bedienen! (Kant)
Kaesetoast

Re: Data.Matrix

Beitrag von Kaesetoast »

Ich möchte dass die Beschriftung meiner Zeilen bestehen bleibt:

Code: Alles auswählen

Gene      Brain     Spinal     [...]
Cacna1         42      22      [...]
Cacna2        123      8       [...]
[...]
[...]
das wird zu:

Code: Alles auswählen

    Gene Brain Spinal  [...]
1     1    42     22   [...]
2     2   123      8   [...]
[...]
[...]

Also anstatt dass das Program noch eine Extrareihe einschiebt und aus meinem Cacna1 und Cacna2 irgendwelche Zahlen macht
bigben
Beiträge: 2777
Registriert: Mi Okt 12, 2016 9:09 am

Re: Data.Matrix

Beitrag von bigben »

Hallo Kaesetoast,

das sieht so aus, als wären das nicht die Namen der Zeilen, sondern selbst eine Spalte Deines Dataframes. Eine Matrix aus Zahlen kann nur Zahlen enthalten, keine Strings. Deshalb die Umwandlung in reine Zahlen. Wahrscheinlich ist es also erforderlich, aus Deiner "Spalte" die Namen der Zeilen zu machen und die Spalte danach zu löschen.

Poste bitte mal das Ergebnis von

Code: Alles auswählen

str(Cacna)
, damit wir Deine Datenstruktur besser verstehen.

LG,
Bernhard
---
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte
Kaesetoast

Re: Data.Matrix

Beitrag von Kaesetoast »

Code: Alles auswählen

data.frame':	17 obs. of  9 variables:
 $ Gene      : Factor w/ 17 levels "cacna1aa","cacna1ba",..: 1 2 3 4 5 6 7 10 8 9 ...
 $ brain     : num  330 207 395 183 687 ...
 $ spinal    : num  34.7 35.8 77.8 25.7 10.2 ...
 $ kidney    : num  5.8 0 1.9 2.3 0 5.4 0.7 4.8 5.2 14.8 ...
 $ heart     : num  2.9 9.8 1046 34.9 0 ...
 $ sk_muscle : num  1.9 19 29.3 21.3 0 1.1 9.7 0.6 97.6 22.1 ...
 $ main_EO   : num  6.2 23.2 23 9.4 0 0.8 4.3 10.5 56.1 12.5 ...
 $ Sachs_EO  : num  7.7 39.3 29.1 3.4 0 2.4 13.6 18.3 63.1 17.7 ...
 $ Hunters_EO: num  10.6 43.5 22.6 8.3 0 1.3 13.3 15.6 41.6 26.3 ...
Benutzeravatar
EDi
Beiträge: 1599
Registriert: Sa Okt 08, 2016 3:39 pm

Re: Data.Matrix

Beitrag von EDi »

Ich würde die ersten Spalte als rownames setzen, danach entfernen, zu einer Matrix umwandelt und dann die heatmap erstellen.
Ungefähr so:

Code: Alles auswählen

# set first col as rownames
rownames(Cacna) <- Cacna[['Gene']]
# copy & remove first col
cm <- data.matrix(Cacna[ , -1])
heatmap(cm)
Bitte immer ein reproduzierbares Minimalbeispiel angeben. Meinungen gehören mir und geben nicht die meines Brötchengebers wieder.

Dieser Beitrag ist lizensiert unter einer CC BY 4.0 Lizenz
Bild.
Kaesetoast

Re: Data.Matrix

Beitrag von Kaesetoast »

Vielen vielen Dank! Hat jetzt wunderbar geklappt!

Ich hoffe von hier aus komme ich dann zurecht durch mein Selbststudium :)

Danke an euch :)
Benutzeravatar
student
Beiträge: 674
Registriert: Fr Okt 07, 2016 9:52 am

Re: Data.Matrix

Beitrag von student »

Sorry, Kaesetoast, ich muss es erwähnen: Du hast von einer Matrix und nicht vom einem data.frame gesprochen! Deswegen, wie von bigben erwähnt, ist str(Datenobjekt) immer sehr hilfreich! ;)
Viele Grüße,
Student
-----------------------------------------------------------------------------------------------------------------------
faes.de, Datenanalyse mit R & das Ad-Oculos-Projekt
Das Ad-Oculos-Projekt auf YouTube

Habe Mut, dich deines eigenen Verstandes zu bedienen! (Kant)
Kaesetoast

Re: Data.Matrix

Beitrag von Kaesetoast »

Ich bin verwirrt?!
Nachdem der hier vorgeschlagene Weg super funktioniert für einige Tage, kommt seit gestern

Code: Alles auswählen

> rownames(Test_2) <- Test_2[['Gene']]
Warning message:
Setting row names on a tibble is deprecated. 
Warum kommt das plötzlich? Ich mache alles 1:1 wie davor
:D :D :D :D :D
bigben
Beiträge: 2777
Registriert: Mi Okt 12, 2016 9:09 am

Re: Data.Matrix

Beitrag von bigben »

Nein, Du machst es nicht wie zuvor. Du hast mit irgendwelchen packages aus dem Hadleyverse/Tidyverse herumgespielt und aus Deinem Dataframe ein tibble gemacht. Ein Tibble ist kein Dataframe ist keine Matrix. Auch wenn das alles sehr ähnlich aussieht. Du musst Dich mal mit den verschiedenen Datentypen von R befassen! Das Tibble gehört nicht zu R, sondern ist mit irgendeinem fremdpackage in Dein Environment gekommen.

Code: Alles auswählen

str(Test_2) #?
sessionInfo()
LG,
Bernhard
---
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte
Antworten