Как я могу подмножить таблицу данных с помощью переменной, если имя переменной идентично существующему имени столбца в таблице данных? Он работает с get("varname",pos = 1)
, но есть ли более надежное/гибкое решение?
library(data.table)
my_data_frame <- data.frame(
"V1"=c("A","B","C","A"),
"V2"=c(1, 2, 3, 4),
stringsAsFactors = FALSE
)
V1 <- "A"
my_data_table <- as.data.table(my_data_frame)
# Can I improve this a bit? I want rows where V1 == "A", but use V1 in the statement
my_data_table[ my_data_table$V1 == get("V1", pos = 1), ]
Переименование V1
не вариант.
ОБНОВЛЕНИЕ: я не считаю это 100% дубликатом. Принятый ответ на этот вопрос неприемлем для моего вопроса, поскольку он использует явное get
, которое я не хочу использовать, как указано в комментариях.
my_data_table[,"V1"=="A"]
илиmy_data_table[,"V1"==V1]
? - person user2974951   schedule 24.09.2018j
, но тогда мы можем использовать 'точка-точка':d[ , d[V1 == ..V1]]
- person Henrik   schedule 24.09.2018my_data_table[V1 == get("V1", envir = .GlobalEnv)]
- person Jaap   schedule 24.09.2018Error in eval (expr, envir, enclos): object '..V1' not found
- person nilsole   schedule 24.09.2018data.table
версия ›= v1.10.2? - person Henrik   schedule 24.09.2018d[d[, .I[V1 == ..V1]]]
- person chinsoon12   schedule 24.09.2018