在R中,该get(s)函数检索其名称存储在字符变量(向量)中的符号的值s,例如
X <- 10
r <- "XVI"
s <- substr(r,1,1) ## "X"
get(s) ## 10
Run Code Online (Sandbox Code Playgroud)
采用罗马数字的第一个符号r并将其转换为等价的整数.
尽管花了一些时间来浏览R-Python词典和谷歌搜索"元编程","语言编程","符号","字符串"等各种组合,我还没有想出任何东西.(我是一位非常有经验的R用户和新手Python用户.)
(我知道上面的例子是一个(非常!)很难解决这个问题的方法.我对这个问题的一般答案很感兴趣,而不是专门将罗马数字转换为整数......)
zw3*_*324 13
你可以使用locals:
s = 1
locals()['s']
Run Code Online (Sandbox Code Playgroud)
编辑:
实际上,getR更多才多艺 - get('as.list')会让你回归as.list.对于类成员,在Python中,我们可以使用getattr(在这里),以及如内置的事len,getattr(__builtins__, 'len')工作.
使用将eval字符串作为表达式求值的函数。
X = 10
r = "XVI"
v = eval(r[0])
Run Code Online (Sandbox Code Playgroud)
重要提示:eval()计算可以在表达式中使用的任何代码,而不仅仅是变量。不要将它直接与用户输入结合使用,这可能会带来安全漏洞。