, и вам все еще нужно расстаться с этим. То есть также работает следующее:

юсь с программированием, используяdplyr в R для работы со столбцами фрейма данных, которые известны только по именам строк. Я знаю, что недавно было обновлениеdplyr для поддержки цитат и тому подобного, и я рассмотрел, как мне кажется, соответствующие компоненты новой статьи «Программирование с помощью dplyr» здесь:http://dplyr.tidyverse.org/articles/programming.html, Однако я все еще не могу делать то, что хочу.

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

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

Ниже приведен минимальный пример для иллюстрации. Я хочу вызвать функцию с различными значениями для процентиля отсечки. Я хочу фрейм данных с именемMPGCutoffs иметь столбец, который назван в соответствии с выбранным квантилем обрезки (это в настоящее время работает в приведенном ниже коде), и я хочу позже работать с этим именем столбца. Из-за общности названия этого столбца я могу знать его только с точки зрения вводаpctCutoff на момент написания функции, поэтому мне нужен способ работать с ней, когда известно только строку, определеннуюprobColName, который следует предварительно определенному шаблону на основе значенияpctCutoff.

userInput_prob1 <- 0.95
userInput_prob2 <- 0.9

# Function to get cars that have the "best" MPG
# fuel economy, where "best" is defined by the
# percentile cutoff passed to the function.
getBestMPG <- function( pctCutoff ){

  # Define new column name to hold the MPG percentile cutoff.
  probColName <- paste0('P', pctCutoff*100)

  # Compute the MPG percentile cutoff by number of gears.
  MPGCutoffs <- mtcars %>%
    dplyr::group_by( gear ) %>%
    dplyr::summarize( !!probColName := quantile(mpg, pctCutoff) )

  # Filter mtcars with only MPG values above cutoffs.
  output <- mtcars %>%
    dplyr::left_join( MPGCutoffs, by='gear' ) %>%
    dplyr::filter( mpg > !!probColName ) #****This doesn't run; this is where I'm stuck

  # Return filtered data.
  return(output)
}

best_1 <- getBestMPG( userInput_prob1 )
best_2 <- getBestMPG( userInput_prob2 )

dplyr::filter() Это то, что я не могу правильно запустить Я пробовал:

dplyr::filter( mpg > probColName ) - Нет ошибки, но строки не возвращены.

dplyr::filter( mpg > !!probColName ) - Нет ошибки, но строки не возвращены.

Я также видел примеры, где я мог передать что-то вродеquo(P95) к функции, а затем кавычки в вызовеdplyr::filter(); Я получил это на работу, но это не решает мою проблему, так как требует жесткого кодирования имени переменной вне функции. Например, если я делаю это, а процентиль, переданный пользователем, равен 0,90, то вызовdplyr::filter() не удается, потому что созданный столбец называетсяP90 и нетP95.

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

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

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