La différence entre les.les données.cadre(x) et de données.cadre(x)
Quelle est la différence entre les.les données.cadre(x) et de données.cadre(x)
Dans l'exemple qui suit, le résultat est le même à l'exception des noms de colonnes.
x <- matrix(data=rep(1,9),nrow=3,ncol=3)
> x
[,1] [,2] [,3]
[1,] 1 1 1
[2,] 1 1 1
[3,] 1 1 1
> data.frame(x)
X1 X2 X3
1 1 1 1
2 1 1 1
3 1 1 1
> as.data.frame(x)
V1 V2 V3
1 1 1 1
2 1 1 1
3 1 1 1
- Voir les manuels: comme.les données.image et de données.image
- Pour confondre les choses encore plus loin, essayez de
as(x, "data.frame")
.
Vous devez vous connecter pour publier un commentaire.
Comme mentionné par Jaap,
data.frame()
appelsas.data.frame()
mais il y a une raison à cela:as.data.frame()
est une méthode pour contraindre d'autres objets d'une classedata.frame
. Si vous écrivez votre propre forfait, vous stockerez votre méthode pour convertir un objet deyour_class
sousas.data.frame.your_class()
. Voici juste quelques exemples.data.frame()
peut être utilisé pour construire une trame de données tout enas.data.frame()
ne peut être utilisé pour contraindre un autre objet à un bloc de données.par exemple:
is.object(1:5); as.data.frame(1:5)
Comme vous l'avez remarqué, le résultat ne diffèrent légèrement, et cela signifie qu'ils ne sont pas exactement égaux:
De sorte que vous pourriez avoir besoin de prendre soin d'être cohérent dans lequel vous utilisez.
Mais il est également intéressant de noter que
as.data.frame
est plus rapide:Essayer
et puis les deux donnent le même résultat
Ce qui est plus étonnant, ce sont des choses comme la suivante:
Fournit un elemnt liste, l'elemnt étant la matrice de x; alors que
donne une liste avec les 9 éléments, un pour chaque matrice d'entrée
MM
Regardant le code,
as.data.frame
échoue plus rapide.data.frame
émet des avertissements, et faire des choses comme enlever rownames si il y a des doublons: