我想知道是否有使用install.packages()或其他相关功能的方法来执行以下操作:只tar.gz将指定包及其所有依赖项的源(即文件)下载到指定的文件夹(在Windows上).
这样做的一个原因是:假设我有一个未启用Internet访问的Linux帐户.为了在Linux机器上安装软件包,我首先要在我的Windows机器上下载所有需要的源代码,然后将它们ftp到Linux机器上,然后使用它们在Linux机器上安装
install.packages('/home/me/R/Packages/blah.tar.gz', repos = NULL)
Run Code Online (Sandbox Code Playgroud) 我正在寻找有关如何构建R用于分析,表格生成和绘图的应用程序的建议.我想到的是一个应用程序:
请注意,我不是在谈论用于探索数据的通用前端/ GUI R(如说Rattle),而是一个特定的应用程序.我希望看到的一些问题是:
Rattle文章在R-Journal中引起了我的兴趣:值得注意的是,Rattle的第一个实现实际上使用Python来实现回调,使用R来实现统计
rpy.的释放RGtk2允许的接口的EL-对此语句Rattle中的R直接编写,以便Rattle是 完全基于R-应用
如果最好为GUI部分使用另一种语言,哪种语言最适合这种语言?我正在寻找一种语言,它可以相对"无痛"地构建GUI,并且可以很好地集成R.从这个StackOverflow问题我应该如何为R和Octave方法(可能使用Python)进行快速GUI开发?我看到Python+ PyQt4+ QtDesigner+ RPy2似乎是最好的组合.这是共识吗?
任何人都有指向我描述的类型的特定(开源)应用程序的指针,作为我可以学习的示例?
我有两个数据帧df1和df2每个有大约10万行和4列.我使用RODBC/sqlQuery将它们读入R并没有任何问题,但是当我尝试rbind它们时,我得到了最可怕的R错误消息:cannot allocate memory.必须有更有效的方法来rbind提高效率 - 任何人都有他们想要分享的最喜欢的技巧吗?例如,我在doc中找到了这个例子sqldf:
# rbind
a7r <- rbind(a5r, a6r)
a7s <- sqldf("select * from a5s union all select * from a6s")
Run Code Online (Sandbox Code Playgroud)
这是最佳/推荐的方式吗?
更新
我使用上面调用中的关键dbname = tempfile()参数使其工作sqldf,正如JD Long在他对这个问题的回答中所建议的那样
当我使用Sweave时R,我可以通过简单地将绘图命令包含在代码块中来避免显式命名绘图文件<<fig=TRUE>> ... @.该Sweave驱动程序自动生成的编号打印文件一样fig1.pdf,fig2.pdf等等.
但是org-mode,似乎我需要:file [...].pdf在标题中使用a显式命名图形文件,例如
#+attr_latex: width=8cm placement=[htbp]
#+begin_src R :results output graphics :exports results :file fig.pdf
require(ggplot2)
a <- rnorm(100)
b <- 2*a + rnorm(100)
d <- data.frame(a,b)
ggplot(d,aes(a,b)) + geom_point()
#+end_src
Run Code Online (Sandbox Code Playgroud)
有没有办法避免显式命名打印文件,并让org-mode latex导出引擎生成这些文件名?
更新:我提供了G. Jay Kerns在此处指出的解决方案,以便于参考:您需要做的就是在标题中包含生成临时文件的emacs-lisp函数,例如:file (org-babel-temp-file "./figure-" ".pdf").这会在当前目录中创建一个临时图形文件(因为./).如果你想在全局临时目录(由变量定义org-babel-temporary-directory)中使用临时图形文件,那么只需说".figure":
#+attr_latex: width=8cm placement=[htbp]
#+begin_src R :results output graphics :exports results :file (org-babel-temp-file "./figure-" ".pdf") …Run Code Online (Sandbox Code Playgroud) 我和R一起工作了好几年.R在数据操作方面非常强大.我正在学习python,我想知道如何使用python操作数据.基本上我的数据集被组织为数据框(例如excel表).我想知道(通过示例)如何使用python完成这种基本数据操作任务?
1. Read csv file like the following
var1, var2, var3
1, 2, 3
4, 5, 6
7, 8, 9
2. Subset data where var2 in ('5', '8')
3. Make a new variable --> var4 = var3 * 3
4. Transpose this data
5. Write to csv file
Run Code Online (Sandbox Code Playgroud)
非常感谢您的帮助和示例!
进一步深入研究R评估的奥秘......这与我之前的问题(如何编写一个评估数据框内表达式的R函数)密切相关.假设我想编写一个函数topfn,它接受一个数据框和一个涉及该数据框的列名的表达式.我想将这两个参数传递给另一个fn实际评估数据框"环境"中表达式的函数.我想要两者fn并topfn在传递数据框和表达式时正常工作
根据上述问题的答案,我的第一次尝试是定义:
fn <- function(dfr, expr) {
mf <- match.call()
eval( mf$expr, envir = dfr )
}
Run Code Online (Sandbox Code Playgroud)
并定义topfn如下:
topfn <- function(df, ex) {
mf <- match.call()
fn(df, mf$ex)
}
Run Code Online (Sandbox Code Playgroud)
现在,如果我有一个数据框架
df <- data.frame( a = 1:5, b = 1:5 )
Run Code Online (Sandbox Code Playgroud)
内部函数fn工作正常:
> fn(df,a)
[1] 1 2 3 4 5
Run Code Online (Sandbox Code Playgroud)
但是topfn不起作用:
> topfn(df,a)
mf$ex
Run Code Online (Sandbox Code Playgroud)
为了解决这个问题,我首先检查一下topfn(df,a),
> class(topfn(df,a))
[1] "call"
Run Code Online (Sandbox Code Playgroud)
这给了我一个丑陋的黑客重新定义fn如下的想法: …
更新:旧问题......它是由2011年2月的data.table v1.5.3解决的.
我试图用data.table包,真的很喜欢加速比我得到的,但我对这个错误难倒当我x[y, <expr>]在那里x和y是"数据表"使用相同的密钥,并且<expr>同时包含的列名x和y:
require(data.table)
x <- data.table( foo = 1:5, a = 5:1 )
y <- data.table( foo = 1:5, boo = 10:14)
setkey(x, foo)
setkey(y, foo)
> x[y, foo*boo]
Error in eval(expr, envir, enclos) : object 'boo' not found
Run Code Online (Sandbox Code Playgroud)
更新...为了阐明我在上面的例子中寻找的功能:我需要做相当于以下的事情:
with(merge(x,y), foo*boo)
Run Code Online (Sandbox Code Playgroud)
但是根据data.table常见问题解答中的以下摘录,这应该有效:
最后,虽然看起来好像x [y]不返回y中的列,但实际上可以使用j表达式中y的列.这就是我们所说的连接继承范围.为什么不直接从x和y返回所有列的并集,然后在其上运行表达式?它归结为代码的效率和更快的编程.当您编写x [y,foo boo]时,data.table会自动检查j表达式以查看它使用的列.它只会对这些列进行子集或分组.仅为j使用的列创建内存.假设foo在x中,而boo在y中(与y中的20个其他列一起).是不是x [y,foo boo]比合并步骤更快的编程和更快的运行,然后是另一个子集步骤?
我知道这个问题解决了类似问题,但似乎没有得到令人满意的解决.有人知道我错过了什么或误解了吗?谢谢.
更新:我问的数据表帮助邮件列表和包的作者(马修Dowle)上说,确实上面引述的常见问题是错误的,所以我使用的语法不会与目前的工作,即我不能指y列在j(即第二次)我的论点x[y,...].
在函数内部,我定义了一堆标量变量,如下所示:
a <- 10
b <- a*100
c <- a + b
Run Code Online (Sandbox Code Playgroud)
在函数的结尾,我想回到a,b,c一个名为向量,具有相同的名称作为变量,用最少的代码,即我并不想这样做:
c( a = a, b = b, c = c )
Run Code Online (Sandbox Code Playgroud)
是否有语言结构可以做到这一点?例如,如果我只是这样做,return(c(a,b,c))则返回一个未命名的向量,这不是我想要的.我目前有一个hacky方式这样做:
> cbind(a,b,c)[1,]
a b c
10 1000 1010
Run Code Online (Sandbox Code Playgroud)
是否有更好,更少hacky的方式?
假设我们有两个数字向量x和y.之间的Pearson相关系数x和y由下式给出
cor(x,y)
如何才能自动仅考虑计算中的一部分(x和y90%)以最大化相关系数?
R Cognoscenti的难题:假设我们有一个数据框架:
df <- data.frame( a = 1:5, b = 1:5 )
Run Code Online (Sandbox Code Playgroud)
我知道我们可以做的事情
with(df, a)
Run Code Online (Sandbox Code Playgroud)
获得结果的向量.
但是我如何编写一个带有表达式(如aor a > 3)的函数并在内部执行相同的操作.即我想编写一个函数fn,它将数据框和表达式作为参数,并返回在数据框中"作为"环境评估表达式的结果.
没关系,这听起来很人为(我可以with像上面一样使用),但这只是我正在编写的更复杂功能的简化版本.我试过几个变种(使用eval,with,envir,substitute,local,等),但他们没有工作.例如,如果我这样定义fn:
fn <- function(dat, expr) {
eval(expr, envir = dat)
}
Run Code Online (Sandbox Code Playgroud)
我收到此错误:
> fn( df, a )
Error in eval(expr, envir = dat) : object 'a' not found
Run Code Online (Sandbox Code Playgroud)
显然,我遗漏了一些关于环境和评估的微妙之处.有没有办法定义这样的功能?
r ×10
data.table ×2
evaluation ×2
python ×2
correlation ×1
emacs ×1
latex ×1
memory ×1
org-mode ×1
packages ×1
sqldf ×1
statistics ×1
sweave ×1