Подтвердить что ты не робот

Эквивалент 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.)

(Я знаю, что приведенный выше пример - это (очень!) плохой способ подойти к проблеме. Меня интересует общий ответ на этот вопрос, а не только преобразование римских цифр в целые числа...)

4b9b3361

Ответ 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() оценивает любой код, который может использоваться в выражении, а не только переменные. Не используйте его напрямую в сочетании с пользовательским входом, что может привести к уязвимости безопасности.