Ответ 1
Мои ответы были бы следующими:
- no ( "Можно выбрать в
dplyr
использовать с логическим вектором?" )
доказательства: (1) ваш пример, (2) страница справки:
...: Список некотируемых выражений, разделенных запятыми. Вы можете лечить имена переменных, такие как позиции. Использовать положительные значения для выбора переменных; используйте отрицательные значения для сброса переменных.
Не говорит ничего о логических векторах. К сожалению.
- Я не знаю ( "почему не логично?" ) - "просто потому, что" (я не думаю, что кто-то, кроме разработчика, действительно мог бы ответить на это). Вы можете добавить запрос функции...
Это немного неуклюже, но
select_(dat,.dots=names(isNum)[isNum])
работает (обратите внимание, что вам нужен вариант select_
, чтобы разрешить использование символьного вектора). Но хороший старомодный
subset(dat,select=isNum)
похоже, тоже работает отлично (если только он не сможет отлично играть с dplyr
каким-то другим способом, о котором я не думал).
Если вы посмотрите на код dplyr:::starts_with
, вы увидите, что он возвращает вектор позиций, а не логический вектор
function (vars, match, ignore.case = TRUE)
{
stopifnot(is.string(match), !is.na(match), nchar(match) >
0)
if (ignore.case)
match <- tolower(match)
n <- nchar(match)
if (ignore.case)
vars <- tolower(vars)
which(substr(vars, 1, n) == match)
}
Я собирался предположить, что вы попытаетесь изменить эту функцию, чтобы создать эквивалент is_numeric
, но я недостаточно хорошо понимаю базовую магию...