ошибка с двойной точкой `..` в таблице данных R. - PullRequest
0 голосов
/ 19 июня 2020

ранее сегодня я искал способ получить вектор имен всех столбцов, которые являются символом класса в таблице data.table в R. Я нашел это решение:

> chrs <- sapply(BTplan, is.character)
> chrs
                         plan                      plannext                     noinsnext                    claimsnext                    regionnext                        noins1 
                         TRUE                          TRUE                         FALSE                         FALSE                          TRUE                         FALSE 
                       noins2                        noins3                       region1                       region2                       region3                       claims1 
                        FALSE                         FALSE                          TRUE                          TRUE                          TRUE                         FALSE 
                      claims2                       claims3                 quotationYear               historicalYear1               historicalYear2               historicalYear3 
                        FALSE                         FALSE                         FALSE                         FALSE                         FALSE                         FALSE 
                       policy                        planNr        combined.PriceAnnually experienceBased.PriceAnnually  referenceBased.PriceAnnually                  errorMessage 
                         TRUE                          TRUE                         FALSE                         FALSE                         FALSE                          TRUE 
                         size 
                        FALSE 
> chrCols <- names(BTplan[, ..chrs])

это работало раньше сегодня, но теперь по какой-то причине выдает ошибку:

Error in `[.data.frame`(BTplan, , ..chrs) : object '..chrs' not found

В чем проблема? Почему .. больше не работает?

1 Ответ

2 голосов
/ 19 июня 2020

Исходя из ошибки, «BTplan» все еще может быть data.frame. Преобразование в data.table с помощью setDT или as.data.table должно исправить это как .., а синтаксис указан c для объекта data.table

library(data.table)
names(as.data.table(BTplan)[, ..chrs])

Использование воспроизводимого например

chrs <- sapply(iris, is.numeric)
names(as.data.table(iris)[, ..chrs])
#[1] "Sepal.Length" "Sepal.Width"  "Petal.Length" "Petal.Width" 
...