Я ищу элегантный или эффективный способ выбора столбцов в R
х data.table
.
Лично я ценю гибкий подход.
Поэтому я склонен ссылаться на столбцы по характеристикам, а не по именам.
Например, я хочу установить значения всех столбцов в нижний регистр.
Если я включу все столбцы в эту операцию, например,
dt[, lapply(.SD, tolower),.SDcols = names(dt)]
цифра c и целочисленные столбцы также будут преобразованы в символ (нижний регистр).
Это нежелательно, и поэтому я сначала идентифицирую все символьные столбцы как следующие:
char_cols <- as.character(names(dt[ , lapply(.SD, function(x) which(is.character(x)))]))
и впоследствии передать char_cols
.SDcols
dt[ , lapply(.SD, tolower), .SDcols = char_cols ]
Если вместо этого все ваши столбцы будут символьными (например, чтобы избежать проблем с преобразованием типов при чтении данных), я бы go примерно так
char_cols <- as.character(names(dt[ , lapply(.SD, function(x) which(all(is.na(as.numeric(x)))))]))
Однако следует убедиться, что ни один столбец не имеет смешанного типа: то есть содержит несколько строк символов и некоторые числовые значения c.
Есть ли у кого-нибудь предложение к ап сделать это более элегантно или более эффективно?