Rufen Sie die benutzerdefinierte Funktion mit if-Anweisung in der Funktion sumply in dplyr auf

8

Ich muss eine benutzerdefinierte Funktion aufrufen, um etwas zu berechnen. In dieser Funktion gibt es eine if-Anweisung, um die Eingabewerte zu überprüfen. Aber meine Codes geben keine erwarteten Werte zurück.

Erstellt einen Test data.frame

%Vor%

test_fun1 gib einfach die Summe aller Werte zurück

%Vor%

test_fun1 gibt die Ergebnisse wie erwartet zurück

%Vor%

Dann füge ich eine if-Anweisung hinzu, um zu prüfen, ob alle Werte gleich sind.

%Vor%

Aber test_fun2 gibt TRUE für Werte zurück, die größer als 2 sind

%Vor%

Ergebnisse sind wie erwartet für andere Werte für test_fun3 für andere Werte.

%Vor%

Ich könnte die gleichen Ergebnisse für 4 oder 5 bekommen

%Vor%

In meinen realen Daten habe ich FALSE von Nicht-NA-Tests erhalten, kann aber hier kein Reproduktionsbeispiel erstellen.

Irgendwelche Ideen zu diesem Problem? Danke für Anregungen.

%Vor%     
Bangyou 21.08.2014, 03:29
quelle

1 Antwort

9

Das Problem ist offensichtlich, dass mutate versucht, die Klasse der Spalte aus der ersten Zuweisung zu bestimmen und diese Klasse auf alle anderen Gruppen anzuwenden. Und die Klasse von NA ist (in deinem Fall leider) logical . Für weitere Details können Sie sich hier Ссылка

ansehen

Ich würde vorschlagen, dass Sie dies umgehen, indem Sie eine gegossene NA zuweisen. Siehe auch ? NA

%Vor%     
Beasterfield 21.08.2014, 11:25
quelle

Tags und Links