web-dev-qa-db-fra.com

L'accès à la colonne avec df [col] donne: L'erreur 'x' doit être atomique pour 'sort.list'

J'ai un tableau très simple sur lequel je veux exécuter une analyse de courbe ROC. Mais d'abord, quand j'essaye de forcer les données dans le type Factor en utilisant la commande table[1]<-factor(table[1]), j'obtiens l'erreur

Error in sort.list(y) : 'x' must be atomic for 'sort.list'
Have you called 'sort' on a list?

Quelques exemples de lignes des données sont donnés ci-dessous

GRADE   TRUE-GRADE

benign  Benign
benign  Benign
benign  Benign
benign  Benign
benign  Benign
benign  Benign
benign  Malignant
benign  Malignant
indeterminate   Benign
indeterminate   Benign
indeterminate   Benign
indeterminate   Benign
indeterminate   Benign
indeterminate   Benign
indeterminate   Benign
indeterminate   Benign
indeterminate   Benign
indeterminate   Benign
indeterminate   Benign
indeterminate   Benign
indeterminate   Benign
indeterminate   Malignant
indeterminate   Malignant
indeterminate   Malignant
likely benign   Benign
likely benign   Benign
likely benign   Benign

Quelqu'un peut-il me dire ce que je fais mal? Le résultat de str (tableau) est donné ci-dessous:

data.frame':   127 obs. of  2 variables:
 $ GRADE        : Factor w/ 5 levels "benign","indeterminate",..: 1 1 1 1 1 1 1 1 1 

 $ BENIGN.MALIGN: Factor w/ 2 levels "Benign","Malignant": 1 1 1 1 1 1 1 1 1 1 ...
22
Maelstorm

La fonction [ appliqué à un bloc de données renvoie un bloc de données (si un seul argument est utilisé). Si vous souhaitez accéder à une seule colonne et la renvoyer en tant que vecteur, vous devez utiliser [[ au lieu.

table[1] <- factor(table[[1]])

Mais cela peut ne pas être nécessaire car les deux colonnes sont des facteurs (voir votre sortie str).

Soit dit en passant: table n'est pas un bon nom pour un objet, car c'est aussi le nom d'une fonction R de base.

31
Sven Hohenstein