Как извлечь и распечатать значения в списке с помощью функции %in% (по порядку) на R

У меня есть очень уникальная проблема, которая, я надеюсь, будет иметь решение.

data <- data.frame('col1' = c('hi', 'hey', 'bye', 'cya'))

Приведенные выше данные представляют собой просто столбец со значениями приветствия и ухода.

У меня есть два вектора здесь.

greet <- c('hey', 'hi')
leave <- c('cya', 'bye')

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

guesslabel <- function(table, m) {
  data %>% dplyr::mutate(guess = ifelse(col1 %in%(m), m, 'none'))
}

Когда я запускаю функцию как таковую

guesslabel(data, greet)

Я получаю следующий вывод:

col1: _____ guess:

hey _____ hi

hi _____ hey

bye _____ none

cya _____ none

Результат, который я хочу:

col1: _____ guess:

hey _____ hey

hi _____ hi

bye _____ none

cya _____ none

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

Хочешь filter? data %>% filter(col1 %in% greet)

Ronak Shah 17.03.2022 03:08

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

J_sdata 17.03.2022 03:10
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
2
24
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Может быть, вы можете использовать match -

library(dplyr)

guesslabel <- function(table, m) {
  table %>% 
    mutate(guess = m[match(col1, m)], 
           guess = tidyr::replace_na(guess, 'none'))
}

guesslabel(data, greet)

#  col1 guess
#1   hi    hi
#2  hey   hey
#3  bye  none
#4  cya  none

guesslabel(data, leave)

#  col1 guess
#1   hi  none
#2  hey  none
#3  bye   bye
#4  cya   cya

Другие вопросы по теме