Ich versuche, die Werte innerhalb eines Datenrahmens in R zu ändern, indem ich eine Protokollumwandlung anwende.Anwenden einer Protokollfunktion in einem Datenrahmen
Mein Datenrahmen besteht nur aus numerischen Werten. Wenn ich diese Funktion anwenden
logFunct <- function(x) log10(x)
dim(data.frame(logFunct(df))
alles gut funktioniert (das heißt 20 Spalten und 20 Zeilen von Datenrahmen werden als 20 Spalten werden zurückgegeben und 20 Zeilen neuer Datenrahmen).
Allerdings, wenn ich für Null-Werte mit dieser Funktion zu erklären versucht (ich weiß, es ist wahrscheinlich eine hässliche Funktion):
log4Zero <- function(x) ifelse(x!=0, log10(x+0.00000000001), log10(1))
dim(data.frame(log4Zero(df))
Ich habe 400 Spalten x 20 Zeilen und die Null-Werte wurden als nicht catched -zero (gab -11 statt 0 zurück).
Jeder kann bitte erklären, was hier passiert und wie kann ich das lösen (d. H. Nullwerte als Null erhalten und alles andere hinzugefügt und protokolliert)?
warum verwenden nicht 'log (x + 1)' im allgemeinen? –
meine Werte sind ziemlich niedrig, viele von ihnen sind wie unter 0,0001. Aber die Idee ist dieselbe, glaube ich. – kaka01
Das ist nicht wirklich wichtig, wenn Sie die Ergebnisse nach Ihren Berechnungen zurücktransformieren –