Если вы изучите код этих двух функций, вы получите некоторые подсказки.
dplyr:: мутировать
function (.data, ...)
{
UseMethod("mutate")
}
<environment: namespace:dplyr>
табличка:: add_column
function (.data, ..., .before = NULL, .after = NULL)
{
df <- tibble(...)
if (ncol(df) == 0L) {
return(.data)
}
if (nrow(df) != nrow(.data)) {
if (nrow(df) == 1) {
df <- df[rep(1L, nrow(.data)), ]
}
else {
stopc("`.data` must have ", nrow(.data), pluralise_n(" row(s)",
nrow(.data)), ", not ", nrow(df))
}
}
extra_vars <- intersect(names(df), names(.data))
if (length(extra_vars) > 0) {
stopc(pluralise_msg("Column(s) ", extra_vars), pluralise(" already exist[s]",
extra_vars))
}
pos <- pos_from_before_after_names(.before, .after, colnames(.data))
end_pos <- ncol(.data) + seq_len(ncol(df))
indexes_before <- rlang::seq2(1L, pos)
indexes_after <- rlang::seq2(pos + 1L, ncol(.data))
indexes <- c(indexes_before, end_pos, indexes_after)
.data[end_pos] <- df
.data[indexes]
}
<environment: namespace:tibble>
Во-первых, вы заметите, что они из двух разных пакетов, хотя оба являются частью tidyverse.
Во-вторых, вы увидите, что mutate
использует указанный метод, тогда как add_column
представляет собой скорее функцию удобства, написанную на базе r с некоторым rlang магия.
Я не уверен в дорожной карте для любого пакета, однако я уверен, что вы могли бы предложить улучшение, если его еще нет, или разветвить проект и предоставить запрос на включение. Это было бы полезным дополнением.
Обновлять
Это уже поднималось в tidyverse/dplyr и, похоже, находится в стадии разработки. хотя еще не запланировано.
person
Kevin Arseneau
schedule
29.01.2018
?row_number
написаноrow_number can be used with single table verbs without specifying x (for data frames and databases that support windowing)
.add_row
не является глаголом dplyr, поэтому дляrow_number
потребуется параметр (но будьте осторожны, он возвращает ранжирование). Проще:rowid_to_column
- person alistaire   schedule 29.01.2018rowid_to_column
- абсолютно поможет с опубликованным вариантом использования; хотя меня по-прежнему интересует более широкий вопрос о кажущемся разрыве между этими двумя аккуратными функциями вселенной. - person Travis Gerke   schedule 29.01.2018