À l'aide de ifelse-après s'appliquent

Je suis en train de faire une nouvelle colonne dans mon dataset donner une sortie unique pour chaque ligne, selon les données de pré-colonnes existantes.

Dans la colonne de sortie, je désir "NA" si tout de l'entrée des vallées dans une ligne donnée sont "0". Sinon (si aucune des entrées sont à 0), je veux que la sortie de la ligne à être le nombre de valeurs uniques des entrées.

J'ai pensé que la solution serait d'utiliser un ifelse fonction imbriquée à l'intérieur d'un appliquer fonction, mais j'obtiens une erreur que je ne comprends pas.

data$output <- apply(data, 1, function(x) {ifelse(x == 0, NA, length(unique(x)))})

Erreur dans $<-.data.frame(*tmp*, "sortie", valeur = c(3 L, 3 L, 3 L, 3L, :
remplacement de 3 lignes, des données a 4

Je ne sais pas pourquoi le remplacement a 3 lignes, j'ai pensé à s'appliquer avec la même fonction pour chacun de mes 4 lignes.

OriginalL'auteur Jordan Garner | 2015-06-10