【问题标题】:Trouble using readline() user input with survfit function使用带有 survfit 功能的 readline() 用户输入时遇到问题
【发布时间】:2014-09-06 15:23:50
【问题描述】:

我尝试查看过去的答案,但找不到确切的答案。我对 R 比较陌生,所以请耐心等待。

我正在做很多需要用户输入的功能。我收集到输入用户文本的最佳方式是通过 readlines()

现在我最关心的功能是 survfit。

可重现的示例 1

library (survival)
Survival <- sample (0:100, 100, rep=TRUE)
STATUS <- sample (0:1, 100, rep=TRUE)
variable <- sample (0:1, 100, rep=TRUE)
data <- data.frame(Survival, STATUS, variable )

Graphdata <- survfit(Surv(Survival, STATUS) ~ variable, data=data)
plot <- plot(Graphdata)

我想做的事

在 survfit 函数中,我想用 readline() 替换变量并输入“变量”用户。

例如:

Graphdata <- survfit(Surv(Survival, STATUS) ~ readlines(), data=data) 

但是,放置占位符似乎不起作用,因为该函数直接从“数据”调用数据并完全忽略了占位符。

我怀疑有一个非常基本的解决方法。

干杯

【问题讨论】:

  • 您应该在代码的顶部包含library(survival),这样人们就不必自己弄清楚哪个包提供了survfit 功能。

标签: r


【解决方案1】:

这应该可行。

varA <- sample (0:1, 100, rep=TRUE)
varB <- sample (0:1, 100, rep=TRUE)
varC <- sample (0:1, 100, rep=TRUE)
data <- data.frame(Survival, STATUS, varA, varB, varC)

chosenvar <- readline("\nWhat independent variable do you want to fit?\n")

if(!(chosenvar %in% names(data))) stop(paste("Predictor must be one of", paste(names(data), collapse=", ")))
Graphdata <- survfit(formula(paste("Surv(Survival, STATUS) ~", chosenvar)), data=data) 
plot <- plot(Graphdata)

【讨论】:

  • 感谢它的工作!只是一个小插曲。如果我一次运行整个脚本,它不会暂停从 readlines 输入。我确定这很容易解决?
  • readline() 只能在交互式会话中使用,因此如果您运行整个脚本,结果将假定对提示的响应是""。我认为如果您使用 source() 函数运行脚本,您可以解决这个问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-12
  • 2020-02-28
  • 2013-03-11
  • 1970-01-01
相关资源
最近更新 更多