首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在R中,如何检测文件访问?

在R中,如何检测文件访问?
EN

Stack Overflow用户
提问于 2017-04-11 01:11:04
回答 1查看 76关注 0票数 0

我想写一个callback function来检测和记录R会话期间的任何文件访问。

在R中有大量不同的内置方法来打开连接,所以在我的回调函数的expression参数中搜索‘打开’,‘文件’,'url',‘读取’,‘保存’等是不可靠的。一定有一些通用的事件,所有这些不同的连接操作函数都汇聚在一起,对吗?

那么,我如何以平台无关的方式以编程方式检测这样的事件呢?谢谢。

以下内容不起作用。我猜在触发回调的时候连接已经关闭了…

代码语言:javascript
运行
复制
cb <- taskCallbackManager();
cb$add(function(xpr,val,ok,visible){
  if(length( cons<-showConnections())>0) print( cons) 
  else print('0');
  TRUE;
},'mycb');

# [1] "mycb"
# [1] "0"

sample <- read.table("http://www.ats.ucla.edu/stat/examples/ara/angell.txt")

# [1] "0"
EN

回答 1

Stack Overflow用户

发布于 2018-09-18 23:44:00

我仍然没有找到答案,但我已经找到了一种解决方法。大多数文件访问函数都遵循类似的语法,将文件的位置作为第一个参数,所以我编写了一个包装器,可以使用它们中的大多数函数,遵循以下模式:

代码语言:javascript
运行
复制
tread <- function(file,...,readfun){
  filename <- deparse(match.call()$file);
  loaded <- readfun(file,...);
  # put your logging/MD5-check/whatever here
  return(loaded);
}

它甚至可以在多作者设置中透明地使用,方法是在脚本或某个全局配置文件的开头将read_csv重新分配给包装器,使其成为readr::read_csv的完全限定名称(在本例中为

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43329147

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档