我在R中使用gather命令来折叠数据框,它给出了一个我不清楚的警告。该命令执行它应该做的事情,但我想了解警告的原因。这是一个新警告,可能与最近更新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 :(得分: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