Написание функции, которая использует цикл for для замены значений отчетов одного столбца в наборе данных на основе вектора символов.

здесь я пытаюсь создать функцию, которую я мог бы запускать каждый раз, когда я хочу заменить значения отчетов в наборе данных их фактическими вариантами ответов.

Гипотетически я использовал следующие варианты ответов для описания цвета автомобилей:

answer_options <- c("blue", "red", "yellow", "green")

а затем набор данных, содержащий столбец цвета:

data <- data.frame(Animal=c("Parrot", "Pigeon", "Crocodile", "Impala", "Dolphin", "Dinosaur"), Colour=c(0,1,1,2,1,3), Year=c(2018, 2017, 2018, 2019, 2020, 2024))

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

answer.option.replacer <- function(dataset, column_index, replacer_vector, replacer_length){
for (i in 0:replacer_length){
dataset[[column_index]][dataset[[column_index]]==i] <-replacer_vector[i+1]}
return(dataset[[column_index]])
}

Теперь, если я бегу:

answer.option.replacer(data, 2, answer_options, 4)

Он печатает желаемый столбец с замененными значениями, но фактически не заменяет их в данных. Любая помощь будет очень признательна, так как я не очень разбираюсь в функциях.


person Yach    schedule 09.10.2019    source источник


Ответы (1)


мы можем просто использовать индекс для создания столбцов. В R индекс начинается с 1, поэтому добавьте 1 в столбец «Цвет» и используйте его для замены значений.

data$Colour <- answer_options[data$Colour +1]
person akrun    schedule 09.10.2019
comment
:о Большое спасибо. - person Yach; 09.10.2019