данные заказа.таблица с тире в имени столбца || ошибка Ошибка в .checkTypos — Возможно, вы намеревались

#r #data.table

#r #данные.таблица

Вопрос:

создайте образец данных.таблица

 DT <- data.table("xx-g"=rep(c("b","a","c"),each=3), y=c(1,3,6), v=1:9)
 

Порядок

 DT[order(xx-g),]

error: Error in .checkTypos(e, names_x) :  Object 'xx' not found. Perhaps you intended xx-g
 

Пробовал себя как персонаж

 DT[order(as.character("xx-g")),]
 

Используйте имя столбца в кавычках

 DT[order("xx-g"),]
 

укажите имя столбца в переменной

 colvars<-"xx-g"

 DT[order(colvars),]
 

Я не могу привести это в действие. Был бы благодарен, если кто-нибудь сможет предоставить указатель.

data.table_1.13.0 R 4.0 и платформа Windows 10.

Ответ №1:

В R вам всегда нужно использовать обратные метки `, когда имя не является регулярным, или использовать get функцию или eval-as.name

 DT[order(`xx-g`),]
DT[order(get("xx-g")),]
DT[order(eval(as.name("xx-g"))),]
   xx-g y v
1:    a 1 4
2:    a 3 5
3:    a 6 6
4:    b 1 1
5:    b 3 2
6:    b 6 3
7:    c 1 7
8:    c 3 8
9:    c 6 9
 

Ответ №2:

Мы можем указать столбец в .SDcols

 DT[DT[, order(.SD[1]), .SDcols = 'xx-g']]