【发布时间】:2020-05-08 00:21:47
【问题描述】:
我有一个 data.tables 列表,我想对每个 data.table 应用一个函数。我设置为在 lapply 函数中使用:=。一切正常,我的输出通过引用更新,但我的函数也打印到控制台。这是一个更大项目的一部分,将此步骤打印到控制台并不理想。
如何在不打印的情况下“静默”运行?有没有更好的方法来构建工作流/代码?
dt1 <- data.table(a = rnorm(1:10),
b = rnorm(1:10))
dt2 <- data.table(a = rnorm(1:10),
b = rnorm(1:10))
dts <- list(dt1, dt2)
lapply(dts, function(dt) {
dt[, ':=' (c = a + b)]
})
dts
dts 现在有一个 C 列,但输出显示在控制台中。此代码块是从另一个函数调用的。
【问题讨论】:
-
如果您想静默执行此操作,请使用
walk -
你能把
<-分配给dts还是用invisible()包裹起来? -
@Matt 是的,分配它可以抑制输出。我避免使用
<-,因为评估代码不需要它,但确实达到了预期的结果。 -
@akrun 我的意思是静默运行,因为 in 不会打印到控制台。我没有明确询问如何在不分配变量的情况下执行此操作,我只是没有设置我的代码来执行此操作。
-
感谢您的回复。只是想消除这个疑问。
标签: r data.table lapply