Seite 1 von 1

Argumente durch Variablen ersetzen

Verfasst: Do Sep 24, 2020 3:24 pm
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

Re: Argumente durch Variablen ersetzen

Verfasst: Do Sep 24, 2020 3:35 pm
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")
}

Re: Argumente durch Variablen ersetzen

Verfasst: Do Sep 24, 2020 3:48 pm
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

Re: Argumente durch Variablen ersetzen

Verfasst: Do Sep 24, 2020 4:43 pm
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!?