如何解决有没有办法将 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 举报,一经查实,本站将立刻删除。