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

时间:2013-02-20 18:53:57

标签: r for-loop

我尝试使用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)
}

有人可以帮忙吗?我怀疑它与head()函数有关。

1 个答案:

答案 0 :(得分:12)

这是一个相对常见的问题,R的新人会遇到这种问题。这里的问题是R服务于两个情妇:交互式控制台工作和“真正的编程”。

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

因此,如果您将其更改为print(head(plot_data)),则应该有效。

这些问题在常见问题7.167.22

中讨论

附录中的补遗:

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