首页 > 解决方案 > R data.table中双点`..`的错误

问题描述

今天早些时候,我正在寻找一种方法来获取 R 中 data.table 中作为类字符的所有列的名称的向量。我找到了这个解决方案:

> 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

问题是什么?为什么..不再工作?

标签: rdata.table

解决方案


根据错误,“BTplan”可能仍然是data.frame. 转换为data.tablewithsetDTas.data.table应该将其修复为..and 语法是特定于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" 

推荐阅读