繁体   English   中英

如何读取具有动态名称的文件,同时避免在 R 中进行硬编码?

[英]How to read in file with dynamic name while avoiding hard-coding in R?

我在使用动态名称读取 csv 文件避免对文件路径进行硬编码时遇到问题。 我想要简洁的代码(非硬编码)。 如果我对完整路径(“~”之前的所有内容)进行硬编码,它可以很好地读取文件。 但是软编码(如果这与硬编码相反)它给出错误的文件路径(尽管在错误中显示了正确的路径。我有两个可变部分的文件名,我在读取之前粘贴到文件名中在。如果我避免粘贴,只为每个人输入一个路径,它也可以工作。

#dynamic part I usually have in a loop with all the options. 
part_a <- "outside" #other options here in my loop include "inside"
part_b <- "late" # other option "early" or "preterm"

#reading in the df
df <-read.csv(paste0("~/Data/FromR/clean_",part_a,part_b,"_2016.csv"),
                           check.names=FALSE, na.strings="null")

Error in file(file, "rt") : cannot open the connection
    In addition: Warning message:
    In file(file, "rt") :
      cannot open file 'C:/Users/myname/Documents/Data/FromR/clean_outsidelate_2016.csv': No such file or directory

如果我在粘贴的第一部分使用getwd()代替~ ,如建议的here ,它通过在粘贴开始时生成此字符串"C:/Users/myname/Documents/MyR_Projects/Specific_R_project/"来工作。 但是我怎样才能让它与“〜”一起工作? 当使用~它停在“文档”文件夹...

期望的结果是读取文件而不会出错执行功能并与其他文件重复。 我的循环可以很好地硬编码,我只想让它更通用或软编码。

我只是试图从不同的wd读取我家中的文件( testFile.txt ),它可以正常工作~

 myFile <- "testFile
 mymy <- ".txt"
 ciao <- read.delim(paste0("~/",myFile,mymy))

在 powershell 中,您可以使用%~% (请看这里),但我不确定如何在R中扩展$HOME

#-------- edit

看看这里这里 基本上,您的.Renviron中定义的任何变量都应该是可访问的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM