Функция для обновления имени кадра данных, хранящегося в переменной - PullRequest
0 голосов
/ 11 июля 2019

Мне нужно преобразовать некоторые даты в символьные форматы для проекта, над которым я работаю, чтобы сделать код более чистым, я хотел написать функцию, передающую имя кадра данных (и, возможно, имя столбца, хотя в этом Например, он не изменяется, поэтому может быть жестко запрограммирован) и выполняет форматирование для каждого, вместо того, чтобы повторять полную строку для каждого кадра данных, в котором я форматирую столбец.

Возможно ли это сделать? Я много гуглил и не могу найти ответ.

kpidataRM$Period <- format(kpidataRM$Period, "%b-%y")
kpidataAFM$Period <- format(kpidataAFM$Period, "%b-%y")
kpidataNATIONAL$Period <- format(kpidataNATIONAL$Period, "%b-%y")
kpidataHOD$Period <- format(kpidataHOD$Period, "%b-%y")

1 Ответ

0 голосов
/ 11 июля 2019

Чтобы ответить на ваш конкретный вопрос, вы можете создать очень простую функцию, подобную этой:

# Your function here takes as input the dataframe name (df) and formats the predefined column (Period)
new_function <- function(df){
  df$Period <- format(df$Period, "%b-%y")
  return(df)
}

, а затем запустить

df1 <- new_function(df1)
df2 <- new_function(df2)

для каждого из ваших фреймов данных (в вашем примере *Например, 1007 * df1 будет kpidataRM ).Если вы хотите включить столбец как переменную в свою функцию, вы можете написать его так:

# Your function here takes as input the dataframe name (df) and column name (col) and formats it.
new_function2 <- function(df, col){
  df[[col]] <- format(df[[col]], "%b-%y")
  return(df)
}

Однако я бы сказал, что в данном случае это не лучший подход, так какПохоже, вы только хотите отформатировать набор столбцов из набора данных, определенным образом.Вместо этого я бы предложил, в точности как Роланд , составить список фреймов данных и перебрать каждый элемент.Простой пример будет выглядеть следующим образом:

# Push all your dataframes in a list (dflist)
dflist <- list(df1,df2)
# Apply in this list a function that changes the column format (lapply)
dflist <- lapply(dflist, function(x){x[[Period]] <- format(x[[Period]], "%b-%y")})

Надеюсь, это работает для вас.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...