У меня есть таблица данных с кучей столбцов, например:Выберите подмножество столбцов в data.table R
dt<-data.table(matrix(runif(10*10),10,10))
Я хочу, чтобы выполнить какую-то операцию по таблице данных, таких как производство корреляционной матрицы (cor(dt)
). Чтобы сделать это, я хочу удалить несколько столбцов, которые содержат нечисловые значения или значения вне определенного диапазона.
Предположим, что я хочу найти корреляционную матрицу, исключая V1, V2, V3 и V5.
Вот мой текущий подход:
cols<-!(colnames(dt)=="V1" | colnames(dt)=="V2" | colnames(dt)=="V3" | colnames(dt)=="V5")
new_dt<-subset(dt,,cols)
cor(new_dt)
Я нахожу это довольно громоздко, учитывая data.table синтаксис, как правило, так элегантно. Есть ли лучший способ сделать это?
Вместо '==' вы можете использовать '% in%'. '!colnames (dt)% in% paste0 ('V', c (1: 2,3,5)) ' – akrun
@sds да, но эта тема имеет более полезные ответы. – hhh