[R相当于塔塔局部或全局的宏(R equivalent of Stata local or glob

2019-08-18 03:52发布

我是一个Stata的用户努力学习R.

我有一对夫妇的,在我的Stata代码,我存储为当地的宏冗长的文件夹路径。 我有两个这些文件夹的多个文件在我的分析中使用。

我知道,在R,我能我想引用文件中的某个文件夹,每次更改工作目录,但它绝对不是做一个好办法。 即使我保存的文件夹路径与R串,我想不出如何引用那些。 例如,在Stata我会用'文件夹1' 。

我想知道如果想在R线重新编写的Stata代码行不学习河的最佳途径

是否有人可以帮助?

Answer 1:

首先,作为前Stata的用户,让我推荐的R用Stata的用户 。 也有这篇文章中的R宏 。 我认为@Nick考克斯是正确的,你需要学会做事情更加不同。 但是,像你(至少在这种情况下),我经常发现自己开始一个新的任务,与我之前的如何做到这一点在Stata并从那里的知识。 有时候,我找到的方法是类似的。 有时候,我可以让[R行为像塔塔时,不同的方法会更好(例如, 循环与矢量 )。

我不知道我是否会捕捉以下你的问题,但让我试试。

在Stata,这将是常见的写:

global mydata "path to my data directory/"

要导入数据,我只需要输入:

insheet using "${mydata}myfile.csv"

作为曾经的Stata用户,我想要做的R.类似的东西这是我做的:

mydata <- "path to my data directory/"

要导入位于此目录中一个CSV文件,并创建一个名为myfile的数据帧时,我会用:

myfile <- read.csv(paste(mydata, "myfile.csv", sep=""))

或更有效地...

myfile <- read.csv(paste0(mydata, "myfile.csv"))

我不是一个非常有效的[R用户还没有,所以也许别人会看到这种方法存在一些缺陷。



Answer 2:

也许你想file.path()

a <- "c:"
b <- "users"
c <- "charles"
d <- "desktop"

setwd(file.path(a,b,c,d))
getwd()
#----
[1] "c:/users/charles/desktop"

你可以用sourceread.XXX或任何其他周围做你想要什么。



Answer 3:

我是从上下文猜测术语当应用于文件“本地”意味着他们已经被加载到内存以提高效率? 如果是这样,那么你需要认识到,几乎所有的普通[R对象的处理的方式。 见?read.table?load 。 只有这样,数据可以保持非本地是有它驻留在具有支持SQL查询或使用专门的包装,如接口封装数据库ffbycol

除此之外,与大通的主意,用file.path(),以文件或连接的任何参考使用适当读取/负载/扫描字符值以(不同命名)的参数,其功能完成。 你可以看到各种低级别的功能?file ,也许下面的一些从帮助页面的其他链接。 你可以存储的一个或多个结果file.path在字符载体构建可能被命名为便于参考。

 pathvecs <- c(User= "~/", hrtg="~/Documents/Heritage/")
 pathvecs
#                   User                    hrtg 
#                   "~/" "~/Documents/Heritage/" 
pathvecs["hrtg"]
#                   hrtg 
#"~/Documents/Heritage/" 


文章来源: R equivalent of Stata local or global macros