Elliminierung von Anführungszeichen

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

Moderatoren: EDi, jogo

Antworten
wbart
Beiträge: 89
Registriert: Fr Mär 16, 2018 4:08 pm

Elliminierung von Anführungszeichen

Beitrag von wbart »

Hallo,
Nach dem Import einer Datei sind durch Leerzeichen in den Spaltenüberschriften Anführungszeichen entstanden.

Code: Alles auswählen

SAM_1_vs_2_orig
# A tibble: 212 x 18
    SeqID SeqName      `3 h`  `20 h` `1 Avs-0h` `1 Bvs-0h` `1 Cvs-0h` `2 Avs-0h` `2 Bvs-0h` `2 Cvs-0h` `3 Avs-0h`
    <dbl> <chr>        <chr> <chr>     <dbl>     <dbl>     <dbl>     <dbl>     <dbl>     <dbl>     <dbl>
 1 669261 IL5RA        NA    X         -4.13     -3.77     -4.00    -0.911     3.90     -0.766    -1.77 
 2 654578 AF210649     X     NA        -1.96     -4.39     -4.54     0.111     0.007     1.08      0.081
 3 669261 IL5RA        X     NA        -3.72     -4.94     -3.12     0.85     -0.13      0.461    -2.08 
Ich habe die Leerzeichen eliminiert mit:

Code: Alles auswählen

 setNames(gsub(" ", "", names(.)))
Dann habe ich versucht die Anführungszeichen weg zu bekommen mit

Code: Alles auswählen

 setNames(gsub("'", "", names(.)))
oder

Code: Alles auswählen

 make.names(colnames(SAM_1_vs_2_orig))
Beides hat leider nicht funktioniert. Wie bekomme ich die Anführungszeichen weg?

VG
wbart
Juergen
Beiträge: 5
Registriert: Do Jul 06, 2023 5:51 pm

Re: Elliminierung von Anführungszeichen

Beitrag von Juergen »

Hallo,
leider ist dein Beispiel nicht ausführbar und somit nicht nachvollziehbar.
Oder du versuchst es unter :
https://methodenlehre.github.io/einfueh ... verse.html "rename"
oder gleich über regexp

Wahrscheinlich sind die " ' '" nicht innerhalb von R entstanden, sondern beim importieren der Daten "übriggeblieben".

VG Jürgen

Edit:Ergänzung
bigben
Beiträge: 2781
Registriert: Mi Okt 12, 2016 9:09 am

Re: Elliminierung von Anführungszeichen

Beitrag von bigben »

Für mich sieht es so aus, als wolltest Du die falschen Anführungszeichen eliminieren: In den Spaltenüberschriften sind die etwas schräg nach rechts unten ("backticks"), in Deinem gsub-Aufruf lotrecht nach unten. Das ist das falsche Zeichen!

LG, Bernhard
---
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte
wbart
Beiträge: 89
Registriert: Fr Mär 16, 2018 4:08 pm

Re: Elliminierung von Anführungszeichen

Beitrag von wbart »

@Juergen du hast recht diese Tabell ist durch import aus Excel enstanden. Daher kann ich sie auch nicht nachbilden. Das Problem ist sogar so hartnäckig, das wenn ich die colnames manuell hinzufüge die Zeichen bleiben.

Code: Alles auswählen

colnames(SAM_1_vs_2_TEST) <-
  c(
    "id",
    "SeqName",
    "3h"  ,
    "20h" ,
    "1Avs_0h"  ,
  )
etc.

@bigben das hatte ich gar nicht gesehen. Die Korrektur hat aber leider auch nichts gebracht.
jogo
Beiträge: 2086
Registriert: Fr Okt 07, 2016 8:25 am

Re: Elliminierung von Anführungszeichen

Beitrag von jogo »

Hallo wbart,

sind nach dem Setzen der Namen per colnames<-() alles Spalten noch mit Backticks oder nur die, die keine gültigen Objektnamen sind (z.B. 3h und 20h)? Bei einem Dataframe muss man berücksichtigen, dass auch per Dataframe$Spaltenname auf eine Spalte zugegriffen werden kann. Dafür müsste Spaltenname ein regulärer Bezeichner sein, sonst sind Backticks fällig.

Und wie schaut es aus, wenn Du kein Tibble sondern erstmal nur einen normalen Dataframe erzeugst?

Gruß, Jörg
bigben
Beiträge: 2781
Registriert: Mi Okt 12, 2016 9:09 am

Re: Elliminierung von Anführungszeichen

Beitrag von bigben »

wbart hat geschrieben: Mi Aug 02, 2023 1:55 pm Daher kann ich sie auch nicht nachbilden. Das Problem ist sogar so hartnäckig, ...
Die Korrektur hat aber leider auch nichts gebracht.
Jetzt ist der Code mindestens bezüglich der Backticks verändert, wir wissen nicht, wie er jetzt aussieht. Warum man das nicht mittels dput reproduzierbar machen kann verstehe ich nicht.

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