使用 tidyr 收集:位置必须介于 0 和 n 错误之间

gather with tidyr: position must be between 0 and n error

我有如下一些数据:

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

现在我可以使用 tidyr 包中的 gather() 使它们变长,方法是编写:

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

但是当我使用

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

这是我的直觉选择,我收到错误消息

Error: Position must be between 0 and n

这是怎么回事,如何解决?

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

问题已标记为已解决,但我认为它可能对 post 我的回答有用。 David Arenburg 的做法是正确的。你需要精确的 backticks 才能工作。如果你在评论中像@uncool一样使用引号,你会得到和他一样的错误:

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

对于德语键盘用户:如果您不知道如何键入反引号(几分钟前就像我一样):

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