YuLab-SMU / yulab.utils

Miscellaneous functions commonly used by 'YuLab-SMU'.
https://yulab-smu.top/yulab.utils
31 stars 10 forks source link

Convert path into absolute form before opening #4

Closed WenruiWu1996 closed 1 year ago

WenruiWu1996 commented 1 year ago
  1. Bug arise if I open directory under working directory, such as "./R", which can be fixed by using a absolute path.
  2. Typo of "working".

Y叔好,之前我一直都有一边处理数据,一边把中间数据用excel打开来看的习惯(比如特别长的文本在R里面就不太方便查看),或者是在保存图片前先打开看看(调图片的比例),因此写了很多preview_*的函数,比如:

preview_gg <- function(plot, width = 6, height = 4, ext = "png", ...) { fname <- tempfile(fileext = paste0(".", ext)) ggplot2::ggsave( filename = fname, plot = plot, height = height, width = width, ... ) utils::browseURL(fname) invisible(NULL) }

所以当我顺着您最近的推文《加载包顺道把包给安装了》翻到了过去的《在Excel里瞄一瞄你的数据吧》时,感到特别的亲切。而在看到o()这个函数的时候,感觉非常的敬佩,开发者把很多情况都考虑到了,实现了文件打开的大一统。我一开始只在Windows里面预览文件,所以用的是system(paste("open", fname)),后面需要在Rserver上面预览,就改成了utils::browseURL(fname),没想到还有这么多情况没有考虑到,学习了。

这次也是在玩o()的时候,发现没办法打开工作目录以外的其他路径,因此尝试写了人生中的第一个pull request。但是我只在Windows上面测试过,不知道其他系统的情况

GuangchuangYu commented 1 year ago

我在windows上和linux上都可以打工别的路径。

你说的情况可重复?

GuangchuangYu commented 1 year ago

另外你说的预览图片这个,ggimage::ggpreview函数能干这事,也是我写的。

WenruiWu1996 commented 1 year ago

可以重复,我尝试打开当前目录下的R文件夹:

如果是o("R"),会直接启动Rterm;

但如果是o("R/"),会提示错误“ Windows找不到文件'....\R/' ”,应该是Windows路径的问题

WenruiWu1996 commented 1 year ago

另外你说的预览图片这个,ggimage::ggpreview函数能干这事,也是我写的。

好的,谢谢Y叔,我去学习一下哈

GuangchuangYu commented 1 year ago

那是你不懂windows。路径分隔符不是这样写的。

不过这个PR,倒是可以合并,normalizePath干的不单是换成绝对路径,还让windows兼容linux的路径分隔符(其实是做了个替换)。

GuangchuangYu commented 1 year ago

PS:我当前还是不能merge,因为你没有经过测试。

比如如果是rserver的,你这个commit是否能work。有潜在的风险。需要所有情况都测试了,才能说服我。

WenruiWu1996 commented 1 year ago

那是你不懂windows。路径分隔符不是这样写的。

明白,这个我当时确实没有留意到这个问题,Windows里面应该用"\\"。

改成:o("R\\"),这个函数就没有问题了,但是这样在Rstudio里面就不能直接tab自动填充路径了,需要手动写"\\",但最后会因为自动填充出现"R\\a/"这样的路径,需要手动删除。

WenruiWu1996 commented 1 year ago

PS:我当前还是不能merge,因为你没有经过测试。

比如如果是rserver的,你这个commit是否能work。有潜在的风险。需要所有情况都测试了,才能说服我。

我在rserver里面分别测试了:

1、使用utils::browseURL()打开txt、csv、png文件(在网页打开),xlsx文件(下载) 2、使用file.edit()打开txt、csv文件(在Rstudio的source中打开)

这几个都没有问题,但是linux和Darwin我就没办法测试了