Argumente durch Variablen ersetzen

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

Moderatoren: EDi, jogo

Antworten
MatthiasWittayer
Beiträge: 2
Registriert: Do Sep 24, 2020 3:12 pm

Argumente durch Variablen ersetzen

Beitrag von MatthiasWittayer »

Liebes Forum,

ich habe wahrscheinlich ein Anfängerproblem, aber alles, was ich bisher gelesen habe (substitute, lazy etc.) hat irgendwie nicht zum Erfolg geführt. Ich lese in einer for- Schleife alle Spaltennamen aus und möchte über jede dieser Spalten (Variablen) eine cutpointanalyse mit cutpointr(dataset, variable, outcome...) laufen lassen. Jetzt kann ich mir super einfach die Variablennamen anzeigen lassen, die die for- schleife in "var1" speichert (print(var1)), allerdings funktioniert es nicht, dass ich cutpointr(dataset,var1,outcome...) hinschreibe. Dann sagt er mir immer, Fehler in if(stats::median(x,[class==uc[1]])>stats;median(x[class== : Fehlender Wert wo TRUE/FALSE nötig ist.
Ich glaube, dass der var1 nicht ersetzt durch den Namen der Spalte, sondern die Spalte "var1" sucht... oder? Daher doofe Frage, wie kriege ich R dazu den Wert der Variablen auszulesen und nicht den Variablennamen?

Vielen Dank
Matthias
bigben
Beiträge: 2777
Registriert: Mi Okt 12, 2016 9:09 am

Re: Argumente durch Variablen ersetzen

Beitrag von bigben »

Hilft das? Zumindest liest das sowohl die Spaltennamen als auch die Spaltenwerte aus:

Code: Alles auswählen

data(iris)
for( i in 1:ncol(iris) ){
  print(names(iris)[i])
  if(is.numeric(iris[[i]]))
    print(mean(iris[[i]]))
  else
    print("Nicht-numerisch")
}
Oder über die Spaltennamen statt über die Spaltennummer gehend:

Code: Alles auswählen

data(iris)
for( i in names(iris) ){
  if(is.numeric(iris[[i]]))
    print(mean(iris[[i]]))
  else
    print("Nicht-numerisch")
}
---
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte
MatthiasWittayer
Beiträge: 2
Registriert: Do Sep 24, 2020 3:12 pm

Re: Argumente durch Variablen ersetzen

Beitrag von MatthiasWittayer »

Teilweise... jetzt kapiert er zwar, dass das eine Variable sein soll aber kommt offenbar mit dem Format nicht zurecht: Can't convert a call to a string. Was Ähnliches hatte ich auch schon wenn ich var1 in Klammern geschrieben habe (var1)...
Vielen Dank für die Antwort dennoch
Matthias
Athomas
Beiträge: 769
Registriert: Mo Feb 26, 2018 8:19 pm

Re: Argumente durch Variablen ersetzen

Beitrag von Athomas »

Wieder das alte Problem: Du gibst (aus Deiner Anfängerperspektive) einen Teil des Lösungsweges vor, ohne das "Nettoproblem" darzustellen.
Ich gehe davon aus, dass sich das Ganze wesentlich eleganter lösen lässt - wenn man Deinen angefangenen (Irr?-) Weg nicht weiter beschreitet...

Und: wir bitten immer um Daten, damit man direkt die Ratschläge ausprobieren kann - das sollte doch auch in Deinem Sinne sein!?
Antworten