Заменить значения в кадре данных на основе таблицы поиска

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

У меня есть таблица, где каждая строка - это клиент, а каждая колонка - это животное, которое они купили. Позволяет назвать этот датафреймtable.

> table
#       P1     P2     P3
# 1    cat lizard parrot
# 2 lizard parrot    cat
# 3 parrot    cat lizard

У меня также есть таблица, на которую я буду ссылатьсяlookUp.

> lookUp
#      pet   class
# 1    cat  mammal
# 2 lizard reptile
# 3 parrot    bird

Что я хочу сделать, это создать новую таблицу под названиемnew с функцией заменяет все значения вtable сclass колонка вlookUp, Я попробовал это сам, используяlapply функция, но я получил следующие предупреждения.

new <- as.data.frame(lapply(table, function(x) {
  gsub('.*', lookUp[match(x, lookUp$pet) ,2], x)}), stringsAsFactors = FALSE)

Warning messages:
1: In gsub(".*", lookUp[match(x, lookUp$pet), 2], x) :
  argument 'replacement' has length > 1 and only the first element will be used
2: In gsub(".*", lookUp[match(x, lookUp$pet), 2], x) :
  argument 'replacement' has length > 1 and only the first element will be used
3: In gsub(".*", lookUp[match(x, lookUp$pet), 2], x) :
  argument 'replacement' has length > 1 and only the first element will be used

Любые идеи о том, как сделать эту работу?

Ответы на вопрос(5)

Ваш ответ на вопрос