gpt4 book ai didi

r - 将字符串表示为 R 中的函数

转载 作者:行者123 更新时间:2023-12-03 23:56:40 25 4
gpt4 key购买 nike

我正在自动创建一系列图,每个图都基于一类化学品(例如金属、PCB 等);由于我将省略的原因,我将图例绘制在情节之外,并为 inset 使用负值legend() 的参数执行此操作的函数(例如 inset = c(-0.2, 0) )。由于每个化学类别需要不同的 inset 值我想使用 hash 创建一个哈希表包来存储每个化学类别所需的值。但是,为了将这些存储在哈希表中,我将值向量存储为字符串(例如,“c(-0.2, 0)”)。

我的哈希表代码如下所示: legend.hash <- hash(chem.class, c('c(-0.2, 0)', 'c(-0.2, 0)', 'c(-0.25, -0.4)', 'c(-0.25, -0.3)', 'c(-0.2, 0)', 'c(-0.4, -0.2)', 'c(-0.2, 0)', 'c(-0.2, 0)')) 在哪里 chem.class是化学类别的向量。

从生成的哈希表中检索值显然是字符串 "c(-0.2, 0)" , 有没有一种方法可以转换这个文本字符串,以便 R 将其解释为一个可以像下面这样使用的函数:legend(..., inset = legend.hash[[chem.class[i]]]) ?

或者有没有更好的方法使用传统的图形系统来实现这一点?

最佳答案

像函数一样执行字符串的经典方法是使用 eval()parse() :

> eval(parse(text="c(-0.2,0)"))
[1] -0.2 0.0

但我真的很奇怪你为什么坚持使用散列而不是简单的列表。

 legend.hash <- list(c(-0.2, 0), c(-0.2, 0), c(-0.25, -0.4), c(-0.25, -0.3), 
c(-0.2, 0), c(-0.4, -0.2), c(-0.2, 0), c(-0.2, 0))
names(legend.hash) <- chem.class

将允许您使用您现在正在使用的确切构造,而无需 eval()parse() 的所有棘手的点点滴滴,尤其是考虑臭名昭著的fortune(106):

> require(fortunes)
> fortune(106)

If the answer is parse() you should usually rethink the question.
-- Thomas Lumley
R-help (February 2005)

关于r - 将字符串表示为 R 中的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10757728/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com