Я пытаюсь использовать операторы ifelse в R, чтобы добавить определенный префикс к моим фреймам данных.
У меня две проблемы с моим кодом на данный момент.
1) Когда я пытаюсь обернуть это в функцию, она не возвращает отредактированные фреймы данных.
2) параметр no = оператора ifelse, который я вставил, повторяется, какЯ делаю это только повторить один раз?
Буду признателен за любую помощь.
примечание.Я использую некоторые данные в этом примере по профессиональным причинам.
dput (head (Player1)):
structure(list(Class = structure(c(2L, 1L, 5L, 4L, 3L), .Label = c("fighter",
"paladin", "rouge", "sorceror", "wizard"), class = "factor"),
Race = structure(c(3L, 1L, 4L, 3L, 2L), .Label = c("elf",
"gnome", "human", "orc"), class = "factor"), alignment = structure(c(4L,
2L, 1L, 5L, 3L), .Label = c("CE", "CG", "LG", "NE", "NN"), class = "factor"),
Level = c(6, 7, 1, 2, 4)), row.names = c(NA, 5L), class = "data.frame")
dput (head (Player2)):
structure(list(Class = structure(c(2L, 1L, 5L, 4L, 3L), .Label = c("fighter",
"paladin", "rouge", "sorceror", "wizard"), class = "factor"),
Race = structure(c(3L, 1L, 4L, 3L, 2L), .Label = c("elf",
"gnome", "human", "orc"), class = "factor"), alignment = structure(c(4L,
2L, 1L, 5L, 3L), .Label = c("CE", "CG", "LG", "NE", "NN"), class = "factor"),
Level = c(6, 7, 1, 2, 4)), row.names = c(NA, 5L), class = "data.frame")
Допустим, у нас естьдва игрока Джон (player1) и Люси (player2), и мы хотим добавить префикс к их именам.Я добился этого с помощью кода ниже.
ifelse(test = grepl('Johns', names(Player1)) == F,
yes = colnames(Player1) <- paste('Johns', colnames(Player1), sep = '_'),
no = print('Player info is fine'))
Вывод здесь работает, и все столбцы получают префикс «Johns_». Однако, когда я пытаюсь обернуть это в функцию для обоих игроков, кадры данных не меняются.
Функция:
Addnames <- function(Player1, Player2){
ifelse(test = grepl('Johns', names(Player1)) == F,
yes = colnames(Player1) <- paste('Johns', colnames(Player1), sep = '_'),
no = print('Player info is fine'))
ifelse(test = grepl('Lucys', names(Player2)) == F,
yes = colnames(Player2) <- paste('Lucys', colnames(Player2), sep = '_'),
no = print('Player info is fine'))
return(Player1)
return(Player2)
}
Addnames(Player1, Player2)
Это не редактирует названия столбцов данных.
Мой идеальный вывод - иметь 'Johns_' и 'Lucys_'в качестве префикса имени каждого столбца для фреймов данных Player1 и Player2 соответственно.
Я хотел бы сделать это в функции.
Другая проблема, с которой я столкнулся, заключается в инструкции ifelse, если no = 'Информация об игроке в порядке' повторяется для каждого имени столбца.Как мне заставить это повторяться только один раз.
Опять же, любая помощь будет высоко ценится.