我想抑制一个命令的输出(在本例中为apply
函数)。
是否可以在不使用sink()
的情况下执行此操作?我已经在下面找到了所描述的解决方案,但如果可能的话,我想在一行中做到这一点。
答案 0 :(得分:81)
目前尚不清楚为什么要在没有sink
的情况下执行此操作,但是您可以在invisible()
函数中包装任何命令,它将抑制输出。例如:
1:10 # prints output
invisible(1:10) # hides it
否则,您始终可以使用分号和括号将事物组合成一行:
{ sink("/dev/null"); ....; sink(); }
答案 1 :(得分:50)
使用capture.output()
功能。它非常像一次性sink()
,与invisible()
不同,它可以抑制的不仅仅是打印消息。在UNIX上将文件参数设置为/dev/null
或在Windows上将NUL
设置为> invisible(cat("Hi\n"))
Hi
> capture.output( cat("Hi\n"), file='NUL')
>
。例如,考虑到Dirk的注释:
{{1}}
答案 2 :(得分:10)
R只会自动打印未分配表达式的输出,因此只需将apply
的结果赋给变量,它就不会被打印出来。
答案 3 :(得分:5)
你可以像下面这样使用'capture.output'。这允许您稍后使用数据:
log <- capture.output({
test <- CensReg.SMN(cc=cc,x=x,y=y, nu=NULL, type="Normal")
})
test$betas
答案 4 :(得分:3)
如果有人到达这里寻求适用于RMarkdown的解决方案,这将禁止所有输出:
```{r error=FALSE, warning=FALSE, message=FALSE}
invisible({capture.output({
# Your code goes here
2 * 2
# etc
# etc
})})
```
代码将运行,但是输出将不打印到HTML文档中
答案 5 :(得分:2)
以下功能应该完全符合您的要求:
hush=function(code){
sink("NUL") # use /dev/null in UNIX
tmp = code
sink()
return(tmp)
}
例如,使用此处的函数:
foo=function(){
print("BAR!")
return(42)
}
运行
x = hush(foo())
将42分配给x但不会打印&#34; BAR!&#34;到STDOUT
请注意,在UNIX操作系统中,您需要替换&#34; NUL&#34;使用&#34; / dev / null&#34;
答案 6 :(得分:1)
让Hadley的评论成为答案(希望使其更清晰可见)。通过使用plyr
软件包,可以不印刷而使用Apply系列
x <- 1:2
lapply(x, function(x) x + 1)
#> [[1]]
#> [1] 2
#>
#> [[2]]
#> [1] 3
plyr::l_ply(x, function(x) x + 1)
由reprex package(v0.3.0)于2020-05-19创建
答案 7 :(得分:0)
function dropDown(data, selectorId) {
var selector = '<select style="width: 400px;" id="results">';
if (data == '') {
selector += '<option value="0">No Reference</option>';
} else {
selector += '<option value="0">Choose a reference</option>';
$.each(data, function (i, val) {
selector += '<option value=' + val.journal_id + '>' + val.reference + '</option>';
});
}
selector += '</select>';
$(selector).appendTo(selectorId);
}
在行的末尾或下一行生成没有NULL的输出
invisible(cat("Dataset: ", dataset, fill = TRUE))
invisible(cat(" Width: " ,width, fill = TRUE))
invisible(cat(" Bin1: " ,bin1interval, fill = TRUE))
invisible(cat(" Bin2: " ,bin2interval, fill = TRUE))
invisible(cat(" Bin3: " ,bin3interval, fill = TRUE))