R не может определить переменную в local (), Ошибка: неожиданный символ в :, Ошибка: неожиданный ')' в ")" - PullRequest
0 голосов
/ 02 мая 2018

Я пытаюсь запустить некоторый код внутри local () в R, поэтому в моей среде нет кучки неприятных переменных, но я только что понял, что не могу определить новую переменную в local (). Например:

local(
     var1 = 1
     print(var1)
  )

выдает мне следующую ошибку:

Error: unexpected symbol in:
       "  var1 = 1
        print"
      > )
       Error: unexpected ')' in ")"
      > 

Но если я создам переменную в forloop в local (), тогда все в порядке; работает следующий код:

local(
           for (v in 1:3) {
             var1 = v
             print(var1)
           }
        )

Почему это?

Обновление: следующий код работает (если я включаю все в local () в фигурные скобки

local(
     {var1 = 1
     print(var1)}
  )

Опять же, в чем здесь разница?

Ответы [ 2 ]

0 голосов
/ 02 мая 2018

Ознакомьтесь с документацией в:? `{`. Особенно обратите внимание на примеры:

(2+3) 

(2+3
 4+5)

{2+3}

{2+3
 4+5}
0 голосов
/ 02 мая 2018

local имеет один основной аргумент, expr. Ваш первый код написан так, что он будет интерпретирован как два аргумента. Например, смотрите приведенный ниже пример, где логика вашего первого кода должна работать независимо от того, где определено var1. Заключение в фигурные скобки создает объект выражения, который становится единственным аргументом для local. Цикл for делает то же самое.

local(
  var1 = 1
  print(1)
)
#> Error: <text>:4:3: unexpected symbol
#> 3:   var1 = 1
#> 4:   print
#>      ^

Создано в 2018-05-01 пакетом Представить (v0.2.0).

...