tableau de listes dans la r
Suppose que si je veux avoir un tableau de 10 éléments, chaque élément est une liste/carte. Je suis en train de faire ceci:
x = array(list(), 10)
x[1][[ "a" ]] = 1
Warning message:
In x[1][["a"]] = 1 :
number of items to replace is not a multiple of replacement length
>
Est-ce la bonne solution? Je veux que chaque élément du tableau à une carte.
OriginalL'auteur user236215 | 2011-04-18
Vous devez vous connecter pour publier un commentaire.
Ce que vous appelez un "tableau" est généralement appelé simplement une liste dans R. vous Vous êtes fauché par la différence entre
[
et[[
pour les listes. Voir la section "Récursive (liste) des objets" danshelp("[")
.Mise à JOUR:
Notez que la solution ci-dessus crée une liste nominative des vecteurs. En d'autres termes, quelque chose comme
ne fonctionnera pas parce que vous ne pouvez pas attribuer plusieurs valeurs à un élément d'un vecteur. Si vous voulez être en mesure d'attribuer un vecteur à un nom, vous pouvez utiliser une liste de listes.
La façon dont l'OP est la création de la matrice, c'est vraiment un tableau avec chaque élément d'une liste. Le problème est que la liste en
x[1]
n'ont pas de nom doncx[1][[ "a" ]]
renvoie la valeur NULL, mais nous essayons d'attribuer une longueur de 1 vecteur pour unlength(0)
index. Il fonctionne si vous nex[1][[ 1 ]]
, mais comme vous le dites, beaucoup mieux si l'OP travaille directement avec une liste pas un tableau.OriginalL'auteur Joshua Ulrich
Si vous vraiment voulez pour ce faire, ensuite, parce que les éléments des listes dans chaque élément de la matrice n'ont pas de noms, vous ne pouvez pas l'indice d'un caractère de vecteur. Dans votre exemple, il n'y a pas de
x[1][[ "a" ]]
:Si il n'y a pas de noms, alors vous devez indice numérique:
Il semblerait plus logique d'avoir une liste bien qu'un tableau:
array(list(), 10)
crée une liste avec une valeur d'attribut, c'est donc très similaire à votre liste.Yep, il crée un tableau liste hybrid - R pense que c'est vraiment un tableau (
is.array(x)
estTRUE
). Je pense que la liste est plus lisible.Je ne me souviens pas exactement comment
is.array
fonctionne, mais?is.array
suggère qu'il semble tout simplement pour une valeur d'attribut positif de la longueur.OK, bon point!
OriginalL'auteur Gavin Simpson