split caractères: les deux variables dans le bloc de données

Disons que j'ai un vecteur de variables comme ceci:

>variable
[1] "A1" "A1" "A1" "A1" "A2" "A2" "A2" "A2" "B1" "B1" "B1" "B1"

et je veux les convertir en un bloc de données comme ceci:

  treatment time
1         A    1
2         A    1
3         A    1
4         A    1
5         A    2
6         A    2
7         A    2
8         A    2
9         B    1
10        B    1
11        B    1
12        B    1

À cette fin, j'ai utilisé reshape2 de colsplit fonction. Il rquires un modèle de diviser la chaîne, mais me suis vite rendu compte il n'y a pas de modèle évident de séparer ces deux caractères, sans espace.
J'ai essayé "" et a obtenu les résultats suivants:

> colsplit(trialm$variable,"",names=c("treatment","time"))
   treatment time
1         NA   A1
2         NA   A1
3         NA   A1
4         NA   A1
5         NA   A2
6         NA   A2
7         NA   A2
8         NA   A2
9         NA   B1
10        NA   B1
11        NA   B1
12        NA   B1

J'ai aussi essayé un lookbehind ou d'anticipation de l'expression régulière :

>colsplit(trialm$variable,"(?<=\\w)",names=c("treatment","time"))
Error in gregexpr("(?<=\\w)", c("A1", "A1", "A1", "A1", "A2", "A2", "A2",  : 
  invalid regular expression '(?<=\w)', reason 'Invalid regexp'

mais il m'a donné l'erreur ci-dessus. Comment puis-je résoudre ce problème?

jetez un oeil à strsplit. Votre code sera quelque chose comme: trialm$treatment <- sapply(strsplit(trialm$variable, ''), '[', 1)
Je sais que c'est VIEUX, mais le str_split_fixed qui est utilisé par le colsplit fonction s'écrit différemment, et si le code fonctionne comme vous l'avez prévu.

OriginalL'auteur Alby | 2013-04-24