如何使用 apply、cat 和 print,而不获取 NULL
我正在尝试使用 cat()
作为 apply()
中的函数。我几乎可以让R做我想做的事,但是在返回结束时我得到了一些非常令人困惑的(对我来说)NULL。这是一个愚蠢的例子,以强调我所得到的。
val1 <- 1:10
val2 <- 25:34
values <- data.frame(val1, val2)
apply(values, 1, function(x) cat(x[1], x[2], fill=TRUE))
这“有效”,因为 R 接受它并运行,但我不明白结果。
> apply(values, 1, function(x) cat(x[1], x[2], fill=TRUE))
1 25
2 26
3 27
4 28
5 29
6 30
7 31
8 32
9 33
10 34
NULL
但是,我想知道:
> apply(values, 1, function(x) cat(x[1], x[2], fill=TRUE))
1 25
2 26
3 27
4 28
5 29
6 30
7 31
8 32
9 33
10 34
那么,如何删除最后的 NULL?
I am trying to use cat()
as functions inside apply()
. I can almost make R do what I want, but I'm getting some very confusing (to me) NULLS at the end of the return. Here is a silly example, to highlight what I'm getting.
val1 <- 1:10
val2 <- 25:34
values <- data.frame(val1, val2)
apply(values, 1, function(x) cat(x[1], x[2], fill=TRUE))
This "works" in that R accepts it and it runs, but I don't understand the results.
> apply(values, 1, function(x) cat(x[1], x[2], fill=TRUE))
1 25
2 26
3 27
4 28
5 29
6 30
7 31
8 32
9 33
10 34
NULL
But, I want to get:
> apply(values, 1, function(x) cat(x[1], x[2], fill=TRUE))
1 25
2 26
3 27
4 28
5 29
6 30
7 31
8 32
9 33
10 34
So, how do I remove that final NULL?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
NULL 是 R 解释器打印您输入的表达式的值 - apply。您可以将它分配在某个地方:
在这种情况下它不会被打印,或者将其包装在“不可见”中:
请注意,只有当您以交互方式运行此命令时,才会打印每一行,如果它在函数中,您将看不到它。
The NULL is the R interpreter printing the value of the expression you typed in - the apply. You can either assign it somewhere:
in which case it wont get printed, or wrap it in 'invisible':
Note that its only when you run this interactively that each line is printed, if it's in a function you won't see it.
您真的需要
apply()
来循环访问您的内容吗?Do you really need the
apply()
to loop through your content?正如 Dirk 指出的那样,这不是在 R 中打印内容的方法。通常您会将结果分配给变量,然后打印它。可以这么说,没有副作用。
您的问题源于 cat 函数,它作为副作用打印到终端,但返回 NULL。
尝试
如果你确实想使用apply进行打印,有两种解决方案。包装到不可见的调用中
,或者将结果(NULL)分配给临时值
As Dirk pointed out this is not the way to print thing in R. Usually you would assign the result to a variable and then print it. No side effects, so to say.
Your problem stems from the cat functions, which prints to the terminal as a side effect, but returns NULL.
Try
If you really want to use apply for printing, there are two solutions. Wrap into invisible call
or, just assign the result (NULL) to a temporary value