Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
功能不打印到for循环内的控制台_R - Fatal编程技术网

功能不打印到for循环内的控制台

功能不打印到for循环内的控制台,r,R,我有一个六列的数据框。当我在R脚本中编写并运行它时: any(is.na(df[ , 1])) 我在控制台窗口中准确地返回了预期的输出。这适用于六列中的任何一列 但是,当我尝试通过函数检查所有六列时,如下所示: for (i in 1:6){ any(is.na(df[ , i])) } 控制台窗口中显示的所有内容如下: > for (i in 1:6){ + any(is.na(df[ , i])) + } 我觉得好像我遗漏了一些关键的小信息,但我无法通过我遇到的在线文档

我有一个六列的数据框。当我在R脚本中编写并运行它时:

any(is.na(df[ , 1])) 
我在控制台窗口中准确地返回了预期的输出。这适用于六列中的任何一列

但是,当我尝试通过函数检查所有六列时,如下所示:

for (i in 1:6){
  any(is.na(df[ , i]))
}
控制台窗口中显示的所有内容如下:

> for (i in 1:6){
+   any(is.na(df[ , i]))
+ }

我觉得好像我遗漏了一些关键的小信息,但我无法通过我遇到的在线文档来理解它。

试着打印一些输出。目前,你的R代码没有吐出任何东西。您在控制台中看到的是正确的

for (i in 1:6){
  print(any(is.na(df[ , i])))
}

您没有存储或打印结果。你认为会发生什么?这是一个完全合理的问题。在命令行中键入
any(is.na(df[,1]))
将生成
[1]FALSE
。运行上面的循环不会生成任何输出。不知道为什么,除非你知道答案,而且这方面的文档很差。在循环和脚本中,您需要使用显式发送到输出,例如
print(…)
。更像R的代码将使用
apply
样式循环,例如
sapply(mtcars,function(x)any(is.na(x))
。或者使用更多的函数编程:
library(functional);sappy(mtcars,Compose(is.na,any))
。这种函数式风格在R中运行得非常好,导致代码非常简短。如果您只是深入研究R,我绝对建议您从函数的角度来学习R,即使用
*apply
样式循环等等。参见例如:@Paul Hiemstra:Great link。谢谢