将字符串转换为 R 中用于管道的函数的内容

Turn string into the contents of a function in R for pipeline

我正在使用 makeContrasts 函数作为管道的一部分(带有 limma)。 我有几项研究,一个接一个地进入管道。对于其中两个,makeContrasts 函数如下所示:

aarts_1_cm = makeContrasts(R10d = labelR - labelP,
                           R1nMRap = labelR1 - labelP,
                           R10nMRap_OSKM = labelR10 - labelO,
                           levels = Design)

aarts_2_cm = makeContrasts(OSKM14 = labelO14 - labelP14,
                           OSKM14mTORsh_OSKM14p21sh = labelOT14 - labelOp14,
                           OSKM20mTORsh_OSKM20p21sh = labelOT20 - labelOp20,
                           levels = Design)

由于每项研究的对比不同,我无法将它们纳入管道。因此我把函数的内容变成了一个字符串:

aarts_2 = "OSKM14 = labelO14 - labelP14,
                           OSKM14mTORsh_OSKM14p21sh = labelOT14 - labelOp14,
                           OSKM20mTORsh_OSKM20p21sh = labelOT20 - labelOp20,
                           levels = Design"

这样我就可以执行 makeContrasts(unstring(aarts_2)),但我不知道如何解串 aarts_2 以便函数读取它。或者如果有更好的方法来做到这一点。如果对此有任何帮助,我将不胜感激。

谢谢。

我认为没有办法编写您想要的 unstring 函数,但您可以这样做:

makeContrastsFromString <- function(s)
  eval(parse(text = paste("makeContrasts(", s, ")")))

然后

makeContrastsFromString(aarts_2)

应该给你想要的。我还没有测试过,因为我无法安装 limma 来获取 makeContrasts。我的功能非常脆弱;如果用户将行分解为字符串向量的单独元素,它将不起作用。我会把它留给你来让它对那种事情变得健壮。