перебирать DataFrame в R для изменения типов столбцов - PullRequest
0 голосов
/ 15 октября 2019

Я пришел из Python, и я не уверен, как это сделать в R. Я хочу написать функцию, которая принимает два аргумента. A dataframe и a list of column names. Я хочу перебирать данные, чтобы преобразовать имена столбцов, которые совпадают с именами в списке.

список имен столбцов, которые я хочу преобразовать, тип: character

col.names<-c('Ri','Na','Mg')

Я написал эту функцию, но она не возвращает желаемый результат

    function.convert<- function(df,col.names){
  for (i in colnames(df)) {
    if (i %in% col.names){
      as.factor(i)}
}}

Мой желаемый вывод - тот же кадр данных, но с указанными столбцами, преобразованными в тип фактора.

1 Ответ

1 голос
/ 15 октября 2019

Вы можете сделать

df[col.names] <- do.call(cbind.data.frame, lapply(df[col.names], as.factor))

или использовать dplyr

df %>% mutate_at(col.names, as.factor)

Или как функцию

f <- function(df, col.names) {
    df[col.names] <- do.call(cbind.data.frame, lapply(df[col.names], as.factor))
    df
}
...