web-dev-qa-db-fra.com

Qu'est-ce que l'erreur "les arguments impliquent un nombre différent de lignes: x, y" signifie?

J'essaie de créer un graphique à partir d'éléments du fichier csv qui ressemble à ceci:

h1,h2,h3,h4
a,1,0,1,0
b,1,1,0,1
c,0,0,1,0

J'ai essayé le code suivant mais je reçois une erreur en disant

Error in data.frame(id = varieties, attr(mat, "row.names"), check.rows = FALSE) : 
  arguments imply differing number of rows: 8, 20 

mon exemple de données comporte 8 colonnes et 20 lignes (à l'exclusion des noms d'en-tête et de ligne). J'ai essayé de rechercher en ligne et d'implémenter quelques correctifs, mais le problème persiste. J'apprécierais vraiment toute aide.

mat <- read.csv("trial.csv", header=T, row.names=1)
varieties = names(mat)
df <- data.frame(id=varieties,attr(mat, "row.names"), check.rows= FALSE)
38
abn

Votre data.frame mat est rectangulaire (n_rows! = N_cols).

Par conséquent, vous ne pouvez pas créer un data.frame à partir des noms de colonne et des noms de noms, car chaque colonne d'un nom de données.fr doit avoir la même longueur.

Peut-être cela suffit-il à vos besoins:

require(reshape2)
mat$id <- rownames(mat) 
melt(mat)
31
EDi

J'ai eu le même message d'erreur alors j'ai un peu googlé j'ai réussi à le réparer avec le code suivant.

df<-data.frame(words = unlist(words))

mots est une liste de caractères.

Ceci au cas où quelqu'un aurait besoin que la sortie soit une trame de données.

8
Simone

Bien que ce ne soit pas une réponse directe à votre question, je viens de rencontrer un problème similaire et je pensais l'avoir mentionné:

J'ai eu un cas où il instanciait un nouvel enregistrement (sans doute très inefficent) pour data.frame (résultat d'une recherche récursive) et me donnait la même erreur.

J'ai eu ceci:

return(
  data.frame(
    user_id = gift$email,
    sourced_from_agent_id = gift$source,
    method_used = method,
    given_to = gift$account,
    recurring_subscription_id = NULL,
    notes = notes,
    stringsAsFactors = FALSE
  )
)

s’avère que c’était le = NULL. Lorsque je suis passé à = NA, cela a bien fonctionné. Juste au cas où quelqu'un avec un problème similaire aurait lu ce message comme je l'ai fait.

3