В Lisp Emacs, как я проверяю, определяется ли переменная?

Вы также можете полностью избежать здесь, используя 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>

88
задан mike 16 April 2009 в 18:58
поделиться

3 ответа

вы можете захотеть 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
130
ответ дан 24 November 2019 в 07:31
поделиться

В дополнение к ответу dfa Вы также можете посмотреть, связана ли она как функция, используя fboundp :

(defun baz ()
  )
=> baz
(boundp 'baz)
=> nil
(fboundp 'baz)
=> t
43
ответ дан 24 November 2019 в 07:31
поделиться

Если вы хотите проверить значение переменной из emacs (я не знаю, применимо ли это, поскольку вы написали «в Emacs Lisp»?):

M -: начинается Eval в мини-буфере. Введите имя переменной и нажмите return. Мини-буфер показывает значение переменной.

Если переменная не определена, вы получите ошибку отладчика.

4
ответ дан 24 November 2019 в 07:31
поделиться
Другие вопросы по тегам:

Похожие вопросы: