Эквивалент python get() в R (= использовать строку для извлечения значения символа)
В R функция get(s)
извлекает значение символа, имя которого хранится в символьной переменной (вектор) s
, например.
X <- 10
r <- "XVI"
s <- substr(r,1,1) ## "X"
get(s) ## 10
берет первый символ римской цифры r
и переводит его в его целочисленный эквивалент.
Несмотря на то, что некоторое время пробирая словари R-Python и Google, различные комбинации "метапрограммирования", "программирования на языке", "символ", "строка" и т.д., я ничего не придумал. (Я очень опытный пользователь R и начинающий пользователь Python.)
(Я знаю, что приведенный выше пример - это (очень!) плохой способ подойти к проблеме. Меня интересует общий ответ на этот вопрос, а не только преобразование римских цифр в целые числа...)
Ответы
Ответ 1
Вы можете использовать locals
:
s = 1
locals()['s']
EDIT:
Собственно, get
в R более универсален - get('as.list')
вернет вам as.list
. Для членов класса в Python мы можем использовать getattr
(здесь) и для встроенных вещей, таких как len
, getattr(__builtins__, 'len')
работы.
Ответ 2
Используйте функцию eval
, которая оценивает строку как выражение.
X = 10
r = "XVI"
v = eval(r[0])
Важное примечание: eval()
оценивает любой код, который может использоваться в выражении, а не только переменные. Не используйте его напрямую в сочетании с пользовательским входом, что может привести к уязвимости безопасности.