Ich habe eine Datenmenge (Mitarbeiter) erstellt von einem CSV, die Daten wie folgt angezeigt werden;Dataset und UDFs mit Sapply
employee[1,]
age name designation
28 Tony Manager
Ich habe eine Funktion erstellt, die eine Entscheidung basierend auf einem Eingabeparameter zurückgibt;
loan_eligible_decision <- function(p)
{
if(p$designation == "manager")
{
decision <- "yes"
}
return(decision)
}
Wenn die Funktion direkt aufgerufen wird, funktioniert es gut und gibt das Ergebnis unten;
Wenn es jedoch innerhalb einer Sapply-Familie aufgerufen wird, löst es einen Referenzfehler aus;
sapply(data.frame(employee[1,]),loan_eligible_decision(x))
Error in p$marital : $ operator is invalid for atomic vectors
Irgendwelche Vorschläge, was könnte eine mögliche Abhilfe/Lösung sein?
Ich habe auch versucht, die If-Bedingung mit zu ersetzen;
if(p[[designation]] == "manager")
und die Funktion so aufgerufen;
sapply(employee['1',],loan_eligible_decision(x))
The error:
Error in loan_eligible_decision(x) : object 'designation' not found
Das ist der falsche Weg, es anzuwenden. Für zeilenweise Operationen müssen Sie 'apply' mit' margin = 1' verwenden. Dies ist jedoch nicht der beste Weg, um mit R zu gehen. Ein vektorisierter Ansatz (der in diesem Fall "ifelse" verwendet) ist die beste Option. Auch hier brauchen Sie keine zeilenweise Operation. – Sotos