r - 为什么每次在 r 中的函数内部都使用 print()
问题描述
我有一个具有嵌套函数的函数。我在主函数体内调用了子函数,但问题是诸如head()
或ggplot
不打印到命令行的方法。R中是否有任何选项可以让这些函数打印而不将这些函数嵌套在print()
方法中
x <- function(sample_dataframe){
y <- function(df){
head(df)
# do more stuff on the dataframe ..
return df
}
y(sample_dataframe)
}
x()
解决方案
不,没有。功能head()
,ggplot()
从不打印任何东西。它们只是返回一个对象,然后 R 决定是否打印该对象。
R 中的规则是在顶层返回的对象将被打印(除非它们被标记为“不可见”)。没有选项可以在其他情况下自动打印。
这种差异背后的理念是 R 旨在以交互方式和编程方式使用。在一个程序中,如果你想打印一些东西,你应该调用一个函数来打印它。奇怪的自动动作只会造成麻烦。但是,如果您使用 R 更像是计算器而不是编程平台,这很不方便。如果你想知道 123 乘以 456 的值,打字123*456
比打字容易得多print(123*456)
,所以原来的交互式控制台会自动打印东西,除非你要求它不要这样做。
自该决定以来的几年里,出现了诸如 R Markdown 文档之类的模糊编程平台和交互式计算器之间界限的东西。
您发现指定操作的编程要求很不方便:您希望123*456
在程序中打印其结果。这种行为的问题在于,R 中有一些函数因其副作用(删除文件、打开图形设备等)而被调用,其中一些函数返回的信息将在交互调用时打印出来,但如果它们在程序中被调用。不得不使用invisible()
来抑制函数结果的打印已经很不方便了;invisible()
在没有将结果保存在变量中的每个函数调用上都必须使用它会更加不方便。
推荐阅读
- ansible - 无法通过 ansible playbook 连接到远程服务器
- laravel-5 - 我已经通过 post 方法将图像文件存储在管理员中,但是当尝试为 pdf/word 放置相同的代码时,它不起作用
- jquery - jquery数据表每一行的下拉菜单
- mosquitto - MosquittoClient 的订阅者在间隔时间段内不显示单个订阅的消息
- javascript - 访问 Braintree 数组内部的问题
- android - 如何使这个设计成为android?
- java - 如何从列表视图内的线性布局中动态添加的视图中获取多个edittext值
- node.js - 如何使用heroku免费服务减少网页的TTFB
- intellij-idea - 为什么在 Intellij idea 中生成持久性映射时会为一对多/多对多关系创建额外的实体类?
- phpmyadmin - 在我的数据库中显示名称而不是 RFID 卡号