Я использую команду сбора в 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

Спасибо, Клаудиу

1
claudiu 2 Дек 2017 в 21:36

1 ответ

Лучший ответ

Всегда лучше иметь 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
0
akrun 2 Дек 2017 в 22:55