一个打印的函数如何能够在不返回打印内容的值和不使用for循环的情况下重复调用?

一个打印的函数如何能够在不返回打印内容的值和不使用for循环的情况下重复调用?,r,sapply,R,Sapply,我最近写了for(I in 1:100){foo(I,bar)}作为脚本中的最后一行。在本例中,foo的最后一行是对print的调用,我肯定不想看到foo的返回值。我只想要印刷品。这个for循环是有效的,但是在R中使用这样的循环感觉很不习惯。有没有更惯用的方法来实现这一点foo在被调用之前必须将每个i以1:100的比例分别取下,因此foo(1:100,bar)将不起作用 sapply(1:100,function(x)foo(x,bar))似乎更为惯用,但它为我提供了foo的返回值及其打印。我曾

我最近写了
for(I in 1:100){foo(I,bar)}
作为脚本中的最后一行。在本例中,
foo
的最后一行是对
print
的调用,我肯定不想看到
foo
的返回值。我只想要印刷品。这个for循环是有效的,但是在R中使用这样的循环感觉很不习惯。有没有更惯用的方法来实现这一点
foo
在被调用之前必须将每个
i以1:100
的比例分别取下,因此
foo(1:100,bar)
将不起作用

sapply(1:100,function(x)foo(x,bar))
似乎更为惯用,但它为我提供了
foo
的返回值及其打印。我曾考虑过使用
do.call
,但不得不使用
as.list(1:100)
让我恶心。我的选择是什么

最起码的例子:

foo<-function(i,bar)
{
  print(paste0("alice",i,bar,collapse = ""))
}
for(i in 1:100){foo(i,"should've used cat")}
sapply(1:100,function(x) foo(x,"ugly output"))```

foo您可以在base R中使用
不可见
来抑制函数返回输出:

不可见(sappy(1:5,函数(x)foo(x,“丑陋”))
[1] “丑陋”
[1] “丑陋”
[1] “丑陋”
[1] “丑陋的”
[1] “丑陋”
您还可以使用
purrr::walk
——它类似于
sapply
,它在迭代值上执行函数,但默认情况下用
不可见
包装:

purrr::walk(1:100,~foo(,“丑陋”))

我是否认为没有软件包就没有惯用的方法来实现这一点?我对tidyverse很熟悉,但我没想到会因为这么琐碎的事情而需要它。请参阅更新-还有
不可见的
。你能澄清一下这里的“惯用”是什么意思吗?代码美学是主观的,因此它可能有助于突出您所追求的内容(例如简洁、清晰、独立于软件包)。