微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

有没有办法将 R 对象传递给 read.csv?

如何解决有没有办法将 R 对象传递给 read.csv?

我有一个包中的 R 函数,我需要将文件路径作为参数传递,但它需要一个 csv,而我的文件一个 xlsx。

我查看了函数代码,它使用 read.csv 加载文件,但不幸的是我无法对包进行任何更改。

是否有一种好方法可以读取 xlsx 并将其传递给函数,而无需将其写入 csv 并让函数将其读回?

在这里遇到了 read.csv 的文本参数: Is there a way to use read.csv to read from a string value rather than a file in R? 这似乎可能是部分原因,但正如我所说,我无法更改该功能

解决方法

也许您可以构建自己的函数,检查文件是否为 xlsx,在这种情况下,创建一个临时 csv 文件,将其提供给您的函数,然后将其删除。类似的东西

yourfunction = function(path){
  read.csv(path)
  head(path)
}

library(readxl)

modified_function = function(path){
  if(grepl{"\\.xlsx",path}){
    tmp <- read_xlsx(path)
    tmp_path <- paste0(gsub("\\.xlsx","",path),"_tmp.csv")
    write.csv(tmp,file = tmp_path)
    output <- yourfunction(tmp_path)
    file.remove(tmp_path)
  }else{
    output <- yourfunction(path)
  }
  return(output)
}

如果有帮助,您可以在此处查看如何仅修改包的一个功能:How to modify a function of a library in a module

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。