2017-12-02 34 views
1

我在R中使用收集命令来折叠数据框,并给出了一个对我来说不清楚的警告。该命令完成它应该做的事情,但我想了解警告的原因。这是一个新的警告,可能与最近更新R安装和软件包有关。R:当使用向量变量来选择列时收集会发出警告

我重新与虹膜数据的简单示例中的问题,请参见下面,它的工作原理与列号2,3任何警告,但如果我用一个矢量创建为TT给出了警告:

> head(gather(iris,key=test,value=nn,2,3),2) 
    Sepal.Length Petal.Width Species   test nn 
299   6.2   2.3 virginica Petal.Length 5.4 
300   5.9   1.8 virginica Petal.Length 5.1 
> tt<- c(2,3) 
> head(gather(iris,key=test,value=nn,tt),2) 
    Sepal.Length Petal.Width Species   test nn 
299   6.2   2.3 virginica Petal.Length 5.4 
300   5.9   1.8 virginica Petal.Length 5.1 
Warning message: 
In if (!is.finite(x)) return(FALSE) : 
    the condition has length > 1 and only the first element will be used 

谢谢,Claudiu

+0

u能显示的版本dplyr/tidyr因为他们都让我错误 – akrun

+0

tidyr版本是0.7.2和0.7 dplyr 0.4。收集afaik的相关信息是tidyr – claudiu

+0

是的,我拥有相同的版本,但不幸的是,两者都以错误结尾。即'最后(聚集(虹膜,关键=测试,值= nn,2,3),2)# 错误顺序(order_by)[[n]]:下标越界' – akrun

回答

0

总是更好有names而不是位置,因为位置可能会改变列删除或添加时。作为“TT”是一个数字指标,我们可以用它来子集列名

library(dplyr) 
library(tidyr) 
library(quantmod) 
last(gather(iris,key=test,value=nn, names(iris)[tt]),2) 
# Sepal.Length Petal.Width Species   test nn 
#299   6.2   2.3 virginica Petal.Length 5.4 
#300   5.9   1.8 virginica Petal.Length 5.1 
+1

我将编辑以替换名称(虹膜)的tt [tt] – claudiu

+0

@claudiu谢谢,我没有正确复制代码。 – akrun