2015-09-10 7 views
5

ho alcuni dati, come di seguito:raccoglie con tidyr: posizione deve essere compreso tra 0 e n errore

x.row10 <- setNames(data.frame(letters[1:3],1:3,2:4,3:5,4:6,5:7,6:8,7:9), 
        c("names",2004:2009,2012)) 
# names 2004 2005 2006 2007 2008 2009 2012 
#1  a 1 2 3 4 5 6 7 
#2  b 2 3 4 5 6 7 8 
#3  c 3 4 5 6 7 8 9 

Ora io possa fare a lungo con gather() dal pacchetto tidyr scrivendo:

x.row10 %>% gather(Year, Val, -names) 

Ma quando io uso

x.row10 %>% gather(Year, Val, c(2004:2009,2012)) 

che è la mia scelta intuitiva, ottengo l'errore m essage

Error: Position must be between 0 and n

Come mai come può essere risolto?

+4

Aggiungi backticks come in '' 'df%>% raccogliere (Anno, Val, c (' 2004': '2009',' 2012')) '' 'o utilizzare le colonne valide nomi. 'gather' pensa che tu stia cercando di selezionare gli indici delle colonne che sono fuori portata. –

+0

Viene visualizzato un messaggio di errore: Errore: tutti gli input select() devono essere risolti in posizioni di colonna numeri interi. Quanto segue non: * c ("2004": "2009", "2012") quando si utilizzano i backtick – uncool

+2

Funziona per me. 'df' dovrebbe essere' x.row10' ofcourse –

risposta

4
x.row10 %>% gather(Year, Val, c(2:8)) 
+2

O 'x.row10' o' df', non entrambi. –

+1

@ StevenBeaupré buon punto, grazie – HubertL

3

La domanda è contrassegnata come risolta, ma penso che sia forse utile postare la mia risposta. Il modo in cui David Arenburg ha ragione. È necessario utilizzare i bastoncini affinché funzioni. Se si utilizzano le virgolette come uncool in commento ha fatto, si ottiene lo stesso errore come lui:

Error: All select() inputs must resolve to integer column positions. 
The following do not: 
* c("2004":"2009", "2012") 

Per l'utente keybord tedesco: Se non so (come me pochi minuti fa :-)) come tipo backstick:

"Shift + the key on the right side of ß" and after that "spacebar".

Problemi correlati