Вы также можете полностью избежать здесь, используя mutate_at()
.
library(tidyverse)
(x <- tibble(
num = 1:3,
month = month.abb[num]
))
#> # A tibble: 3 x 2
#> num month
#>
#> 1 1 Jan
#> 2 2 Feb
#> 3 3 Mar
x %>%
mutate(month = tolower(month))
#> # A tibble: 3 x 2
#> num month
#>
#> 1 1 jan
#> 2 2 feb
#> 3 3 mar
foo <- function(df, col) {
mutate_at(df, .vars = col, .funs = tolower)
}
foo(x, "month")
#> # A tibble: 3 x 2
#> num month
#>
#> 1 1 jan
#> 2 2 feb
#> 3 3 mar
this <- "month"
foo(x, this)
#> # A tibble: 3 x 2
#> num month
#>
#> 1 1 jan
#> 2 2 feb
#> 3 3 mar
Создано в 2019-03-09 из пакета представитель (v0.2.1.9000) sup>
вы можете захотеть boundp: возвращает t, если переменная (символ) не void; точнее, если его текущая привязка не является недействительной. В противном случае он возвращает ноль.
(boundp 'abracadabra) ; Starts out void.
=> nil
(let ((abracadabra 5)) ; Locally bind it.
(boundp 'abracadabra))
=> t
(boundp 'abracadabra) ; Still globally void.
=> nil
(setq abracadabra 5) ; Make it globally nonvoid.
=> 5
(boundp 'abracadabra)
=> t
В дополнение к ответу dfa Вы также можете посмотреть, связана ли она как функция, используя fboundp :
(defun baz ()
)
=> baz
(boundp 'baz)
=> nil
(fboundp 'baz)
=> t
Если вы хотите проверить значение переменной из emacs (я не знаю, применимо ли это, поскольку вы написали «в Emacs Lisp»?):
M -:
начинается Eval
в мини-буфере. Введите имя переменной и нажмите return. Мини-буфер показывает значение переменной.
Если переменная не определена, вы получите ошибку отладчика.