Превратить строку в содержимое функции в R для конвейера - PullRequest
1 голос
/ 06 апреля 2020

Я использую функцию makeContrasts как часть конвейера (с лиммой). У меня есть несколько исследований, которые вводятся в конвейер одно за другим. Для двух из них функции 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, чтобы функция читала Это. Или, если есть лучший способ сделать это. Буду признателен за любую помощь в этом.

Спасибо.

1 Ответ

1 голос
/ 06 апреля 2020

Я не думаю, что есть способ написать нужную функцию unstring, но вы можете сделать это:

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

, тогда

makeContrastsFromString(aarts_2)

должно дать вам желание ты хочешь. Я не проверял его, так как не могу установить limma, чтобы получить makeContrasts. Моя функция довольно хрупкая; если пользователь разбивает строки на отдельные элементы строкового вектора, это не сработает. Я оставлю это вам, чтобы сделать это устойчивым к таким вещам.

...