R специальный if- оператор над именами столбцов - PullRequest
0 голосов
/ 28 января 2020

У меня есть фрейм данных, и я хочу добавить единицы измерения (µg, g, ...) к значениям имен столбцов. Мои данные называются BLS_datatable. Я добавил модули отдельно с помощью следующего кода. Я знаю, что это немного избыточно, но это работает. Здесь используется значение KiloJoule.

colnames(BLS_datatable) <- gsub(colnames(BLS_datatable), pattern = 'KiloJoule', replacement = 'KiloJoule[kj]')

mg - самая распространенная единица в моем фрейме данных, который состоит из более чем 100 столбцов. Я хочу сделать «если утверждение» для добавления единицы мг к подходящим значениям. К сожалению, это не работает:

if("[" %in% colnames(BLS_datatable)){
  print(colnames(BLS_datatable))
} else {
  print(colnames(c(BLS_datatable),"[mg]"))
}

Что здесь не так? Спасибо за помощь, ура

1 Ответ

0 голосов
/ 28 января 2020

Как уже упоминалось в комментариях после запуска первой части, остальные из них являются столбцами "mg". Мы можем получить номера столбцов "KiloJoule" столбцов, invert их, чтобы получить оставшиеся номера столбцов и добавить '[mg]' к этим столбцам.

inds <- grep('KiloJoule', colnames(BLS_datatable), invert = TRUE)
colnames(BLS_datatable)[inds] <- paste0(colnames(BLS_datatable)[inds], '[mg]')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...