Mam tabelę danych z wieloma kolumnami, np:Wybierz podzbiór kolumn w data.table R
dt<-data.table(matrix(runif(10*10),10,10))
chcę wykonać jakąś operację na tabeli danych, takich jak wytwarzanie macierzy korelacji (cor(dt)
). W tym celu chcę usunąć kilka kolumn, które zawierają wartości nienumeryczne lub wartości spoza pewnego zakresu.
Załóżmy, że chcę znaleźć macierz korelacji, z wyjątkiem V1, V2, V3 i V5.
Oto moje obecne podejście:
cols<-!(colnames(dt)=="V1" | colnames(dt)=="V2" | colnames(dt)=="V3" | colnames(dt)=="V5")
new_dt<-subset(dt,,cols)
cor(new_dt)
Uważam to dość kłopotliwe, zważywszy składnia data.table jest zwykle tak eleganckie. Czy istnieje lepsza metoda robienia tego?
Zamiast '==', możesz użyć '% w%'. '!colnames (dt)% w% paste0 ('V', c (1: 2,3,5)) ' – akrun
@sds yes ale ten wątek ma więcej przydatnych odpowiedzi. – hhh