У меня проблемы с вычислением нескольких одинаковых задач в цикле. Я пытаюсь манипулировать аргументами с помощью простых циклов for, но каждый раз терплю неудачу. Пример, который я привожу здесь, взят из анализа выживаемости, но я ...

r
0
cercan 5 Янв 2021 в 13:26

1 ответ

Лучший ответ

Вы можете изменить последний код

paste(fit_name) <- survfit(
  formula = Surv(time, status) ~ column_name,
  data = data_name
)

К

assign(fit_name, survfit(
  formula = as.formula(paste0("Surv(", time, ", ", status, ") ~ ", column_name)),
  data = eval(parse(text=data_name))
))

Для дальнейшего улучшения я бы рекомендовал не сохранять каждый результат в отдельной переменной, а сохранять их вместе в один список.
Например,

map(c(protein1="protein1", protein2="protein2"), function(i){
  imap(c(OS=dummy_OS, DFS=dummy_DFS), function(data_name, f){
    survfit(
      formula = as.formula(paste0(
        "Surv(", f, "_month", ", ", f, "_status", ") ~ ", f, "_status"
      )),
      data = data_name
    )
  })
})

Создаст вложенный список, например

$protein1
$protein1$OS
survfit object 1

$protein1$DFS
survfit object 2


$protein2
$protein2$OS
survfit object 3

$protein2$DFS
survfit object 4

Надеюсь, это поможет!

0
marc_s 7 Янв 2021 в 19:29