преобразовать символьный столбец в число c в R - PullRequest
1 голос
/ 20 февраля 2020

Интересно, почему мое преобразование столбца "t5" не было успешным -

В столбце "t5" содержатся все символы, я хочу преобразовать его в столбец цифры c, оставив не- Numri c значение как NA, названное в таблице как "t5.num".

Мой код ниже: сначала я назначил имя, затем попытался изменить столбец, но это не сработало. -

d <- tibble(id = c(3, 7, 1, 10,100), t5 = c("10", "<1", "NA", "8","78"))
convert_column <- function(data, col_name) {
    new_col_name <- paste0(rlang::enquo(col_name),".num")
    data %>%
        mutate(new_col_name = as.numeric(!!col_name))
     }
d %>% convert_column("t5")

Может кто-нибудь указать, что не так с моим кодом? спасибо за вашу помощь!

1 Ответ

1 голос
/ 20 февраля 2020

Чтобы получить new_col_name, вам не нужно enquo. Чтобы назначить new_col_name в качестве имени столбца, используйте !! + :=. Поскольку вы передаете col_name в виде строки, нам нужно преобразовать ее в символ (sym) и затем оценить (!!).

library(dplyr)
library(rlang)

convert_column <- function(data, col_name) {

   new_col_name <- paste0(col_name,".num")
   data %>% mutate(!!new_col_name := as.numeric(!!sym(col_name)))
}

d %>% convert_column("t5")

# A tibble: 5 x 3
#     id t5    t5.num
#  <dbl> <chr>  <dbl>
#1     3 10        10
#2     7 <1        NA
#3     1 NA        NA
#4    10 8          8
#5   100 78        78

Возвращает предупреждение при преобразовании «<1» в число c, прежде чем повернуть его на <code>NA.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...