Je veux écrire une fonction qui crée une nouvelle colonne avec RowMeans pour les colonnes 1-3, Voici mon Dataframe: P> sortie souhaitée: p> Mon code est comme suit, mais cela ne fonctionne pas: p>
test p>
blockQuote> #create function
mean_score <- function(x) {
for (i in 1:nrow(test)){
if (sum(test[i, x] != "NA", na.rm = TRUE) >2){
test$mean_score[i] <- rowMeans(test[i, x], na.rm = TRUE)
} else
test$mean_score[i] <- print("N")
}
}
#compute function
mean_score(1:3)
3 Réponses :
Vous pouvez simplement utiliser RowMeans code> Qu'est-ce qui reviendra na code> s'il y a une ligne tenant na code> Qu'est-ce qui devrait être ici équivalent à Si plus de 2 questions pour les colonnes 1-3 par ligne ont été répondues em>.
Bien que GKI a une meilleure réponse plus simple et que vous devriez utiliser ici est ce que j'ai changé votre code pour être afin que cela fonctionne.
Généralement, lorsque vous faites une fonction, vous souhaitez que l'entrée soit la saisie, c'est le fichier de données, dans ce cas Une autre chose importante de la note est que vous Voulez-vous d'abord de créer un vecteur de valeurs, puis de fixer ledit vecteur au Dataframe que dans le code ci-dessous, mais que vous devez vous assurer de créer un objet vectoriel vide pour le faire. R ne vous permet pas vraiment d'ajouter lentement des données cellulaires à un fichier de données, il préfère qu'un vecteur (qui peut être ajouté à) de longueur égale ne soit joint à celui-ci. P> Aussi vous n'avez pas besoin d'utiliser J'espère que cela vous aidera à expliquer pourquoi votre fonction avait des problèmes, mais franchement, la réponse de GKI est meilleure pour l'utilisation générale R! p> texte code> et modifier la fonction de là. P> Imprimer () CODE> Pour insérer un caractère dans un vecteur. P>
Est-ce qu'en ce qui concerne la redondance du nom de la fonction et le nom de vecteur signifie_score code>? Devinez que ce n'est pas la meilleure pratique, mais le code a fonctionné pour moi, donc je ne suis pas sûr de ce que vous soulignez?
Désolé mon erreur, j'ai couru le code et j'ai échoué, je réalise que je lisais le mauvais test code>. Supprimera mon commentaire.
Je pense qu'il n'est pas idéal de mettre un caractère avec une valeur numérique, car elle convertira la colonne entière en caractère. Cependant, si c'est ce que vous voulez:
Merci d'avoir souligné qu'il est préférable d'éviter les caractères numériques dans la même colonne! Si nous devions utiliser des valeurs numériques, ce serait-il juste d'autre {na}? En outre, recommanderiez-vous postuler sur des boucles?
Oui, vous pouvez simplement ajouter du NA au lieu de "n". Je pense que la version applicable est moins encombrante et plus facile à lire. Il y a beaucoup de messages sur les boucles vs la famille Apply sur ce site Web. Vous trouverez ici un Stackoverflow.com/Questions/ 42393658 / ...