R有一个qr()函数,它使用LINPACK或LAPACK执行QR分解(根据我的经验,后者的速度提高了5%).返回的主要对象是包含在上三角矩阵R(即R=qr[upper.tri(qr)])中的矩阵"qr" .到现在为止还挺好.qr的下三角部分包含Q"紧凑形式".一个可以通过使用提取QR分解Q qr.Q().我想找到倒数qr.Q().换句话说,我确实有Q和R,并希望将它们放在"qr"对象中.R是微不足道的,但Q不是.目标是应用它qr.solve(),这比solve()在大型系统上快得多.
根据对R编程风格的讨论,我看到有人曾经说他将所有自定义函数放入一个新环境并附加它.我还记得R环境可能用作哈希表.这是好风格吗?您希望何时将数据/功能置于新的环境中?或者只是使用.GlobalEnv什么?
编辑提出了我的第二部分问题:如何检查不同环境的同名变量?
作为指导,我更喜欢使用lapply或*ply(来自plyr)在列表元素上应用函数,而不是显式迭代它们.但是,当我必须一次处理一个列表时,这很有效.当函数接受多个参数时,我通常会进行一个循环.
我想知道是否有可能有一个更清洁的结构,仍然是功能性的.一种可能的方法是定义一个类似于Python的函数zip(x,y),它接受输入列表,并返回一个列表,其第i个元素是list(x,y),然后将该函数应用于这个清单.但我的问题是我是否使用最干净的方法.我并不担心性能优化,而是清晰/优雅.
以下是天真的例子.
A <- as.list(0:9)
B <- as.list(0:9)
f <- function(x, y) x^2+y
OUT <- list()
for (n in 1:10) OUT[[n]] <- f(A[[n]], B[[n]])
OUT
[[1]]
[1] 0
[[2]]
[1] 2
...
Run Code Online (Sandbox Code Playgroud)
这是压缩的示例(可以扩展到任意参数):
zip <- function(x, y){
stopifnot(length(x)==length(y))
z <- list()
for (i in seq_along(x)){
z[[i]] <- list(x[[i]], y[[i]])
}
z
}
E <- zip(A, B)
lapply(E, function(x) f(x[[1]], x[[2]]))
[[1]]
[1] 0
[[2]]
[1] 2
...
Run Code Online (Sandbox Code Playgroud) A想要绘制geom_tile()而不显示周围的灰色框架.例:
library(ggplot2)
p <- ggplot(melt(volcano), aes(x = X1, y = X2, z = value,fill = value)) + geom_tile()
print(p)
Run Code Online (Sandbox Code Playgroud)
产生下图,如果没有主题背景框架热图,那将会更好看.我对填充的成像与基本图形相同,为4%.大多数时候都很好,但并非总是如此.
我假设这个问题的相同解决方案也可以应用于其他geoms.

我必须使用商业Java库,并希望从Python中完成.Jython很强大,我很好,因为它背后有一些点发布.但是,我也想使用NumPy,这显然不适用于Jython.CPype和Java数字库之类的选项没有吸引力.前者基本上死了.后者大多不成熟,缺乏易用性和广泛接受NumPy.我的问题是:如何让Jython和Python代码互操作?我可以接受从Cpython或其他方式调用Jython.
是否有接收列表的功能x,并返回一个列表y,以便y[[i]] = intersect(x[[1]][[i]], x[[2]][[i]], ...)?
如果没有,是否有R方式在几行中编码?
分层贝叶斯模型常用于市场营销,政治科学和计量经济学.然而,我所知道的唯一方案是bayesm,它实际上是一本书的伴侣(Rossi等人的贝叶斯统计与市场营销)我错过了什么?是否有用于R或Python的软件包在那里完成工作,和/或相关语言中的一个成熟的例子?
我正在处理一个简单的表格表
date variable value
1970-01-01 V1 0.434
1970-01-01 V2 12.12
1970-01-01 V3 921.1
1970-01-02 V1 -1.10
1970-01-03 V3 0.000
1970-01-03 V5 312e6
... ... ...
Run Code Online (Sandbox Code Playgroud)
对(日期,变量)是唯一的.我想把这张桌子变成一张宽大的桌子.
date V1 V2 V3 V4 V5
1970-01-01 0.434 12.12 921.1 NA NA
1970-01-02 -1.10 NA NA NA NA
1970-01-03 0.000 NA NA NA 312e6
Run Code Online (Sandbox Code Playgroud)
我想以最快的方式做到这一点,因为我必须在具有1e6记录的表上重复操作.在R本机模式中,我相信这两者tapply(),reshape()并且d*ply()在速度方面占主导地位data.table.我想针对基于sqlite的解决方案(或其他数据库)测试后者的性能.以前做过吗?是否有性能提升?并且,当"宽"字段(日期)的数量可变且事先不知道时,如何在sqlite中从高到宽进行转换?
公式是R统计和图形函数的一个非常有用的特性.像所有人一样,我是这些功能的用户.但是,我从未编写过将公式对象作为参数的函数.我想知道是否有人可以通过链接到R编程的这一方面的可读介绍,或通过提供一个自包含的示例来帮助我.
我在Windows 7中使用doSMP作为并行后端,使用R 2.12.2.我发生错误,并想了解可能的原因.下面是一些重现错误的示例代码.
require(foreach)
require(doSMP)
require(data.table)
wrk <- startWorkers(workerCount = 2)
registerDoSMP(wrk)
DF = data.table(x=c("b","b","b","a","a"),v=rnorm(5))
setkey(DF,x)
foreach( i=1:2) %dopar% {
DF[J("a"),]
}
Run Code Online (Sandbox Code Playgroud)
错误消息是
Error in { : task 1 failed - "could not find function "J""
Run Code Online (Sandbox Code Playgroud)