rmarkdown::渲染时提示错误;“编织到html”;按钮运行
我使用“Knit to HTML”按钮和rmarkdown::render()得到了不同的输出,我发现这和环境有关。我想知道环境到底有什么不同,这样我才能完全理解发生了什么。以下是我的观察:rmarkdown::渲染时提示错误;“编织到html”;按钮运行,r,r-markdown,R,R Markdown,我使用“Knit to HTML”按钮和rmarkdown::render()得到了不同的输出,我发现这和环境有关。我想知道环境到底有什么不同,这样我才能完全理解发生了什么。以下是我的观察: var1 <- "" var1 <<- some code that creates a new value 在所有情况下,后续函数都会获取新的var值和功 请注意,使用第一个设置(仅保存到全局)的前一个块在rmarkdown::render()中未出现错误那么,在环境方面,运行代
var1 <- ""
var1 <<- some code that creates a new value
- 在所有情况下,后续函数都会获取新的var值和功
os1 <- function(OSdf, strata_name) {
form <- as.formula(paste("Surv(tte, status) ~", strata_name))
KMfit <- do.call(survfit, args = list(formula = form, data = OSdf, conf.type = "log-log"))
}
os1彭彭彭,我知道这是一个老问题(也没有答案),但我的想法是。我的观点是,但从来没有一个rmarkdown文档依赖于全局环境中的变量。将文档视为一个函数
,其中函数参数作为参数提供给文档。就像一个好的无副作用的函数一样,在Rmd中,要么从params$
获取数据,要么创建一个变量,否则就是一个错误。(这包括库(…)
,如有必要)顺便说一句:我认为命名变量var
是个坏主意,因为它与stats
中的函数同名。虽然R通常是正确的(当您尝试var(1:3)
时,会引用stats::var
),但它并不总是正确的。尝试var感谢@r2evans的回复。我知道在这种情况下使用全局变量是不好的。这就是为什么我想了解潜在的原因。我确实发现,使用do.call并将嵌套函数的参数放入列表可以解决问题,而无需使用全局变量。我在上面发了帖子,希望有人能解释一下为什么这会带来不同。是的,“var”只是一个虚构的例子。我现在更新了。再次感谢。
os1 <- function(OSdf, strata_name) {
form <- as.formula(paste("Surv(tte, status) ~", strata_name))
KMfit <- do.call(survfit, args = list(formula = form, data = OSdf, conf.type = "log-log"))
}