head()函数在'for'循环中不起作用?

clo*_*liu 2 for-loop r

我尝试使用for循环打印出几行.这是代码.奇怪的是它对head()函数不起作用.它的工作原理,如果我换成head()print().

kw_id=c('a','b')
keyword_text=data.frame(col=c('a','b'), col2=c(1,2), row.names=(c('r1','r2')))

for (i in 1:2) { 
   plot_data<-subset(keyword_text,col==kw_id[i])
   print(plot_data)
   head(plot_data)
}
Run Code Online (Sandbox Code Playgroud)

有人可以帮忙吗?我怀疑它与head()功能有关.

jor*_*ran 12

这是R的新手遇到的一类相对常见的问题.这里的问题是R服务于两个情妇:交互式控制台工作和"真正的编程".

在控制台上键入返回值的命令时,控制台会自动调用print方法以显示结果.运行脚本时,除非您告诉它,否则不会发生这种情况.

所以,如果你改变print(head(plot_data))它应该工作.

这些在FAQ 7.167.22中讨论

附录取消了补遗:

正如Josh指出的那样,将for循环直接复制+粘贴到控制台也无法打印任何输出.在这种情况下发生的是for循环(就像R中的大多数东西)实际上是一个函数,它的返回值(NULL)是不可见的,这意味着没有打印.(这在?Control.中提到.)

  • @JoshO'Brien:这种自动打印(实际上我相信,`show`被使用)只发生在命令行的最高层(和`浏览器`).相关问题在FAQ 7.16中进行了讨论(http://cran.r-project.org/doc/FAQ/R-FAQ.html#Why-is-the-output-not-printed-when-I-source_0028_0029-a- file_003f)和7.22. (2认同)