如果我从CRAN网站下载"package-name".tar.gz文件,gunzip并将其解压缩到自定义目录中,如何从R中加载该包?我无法在R安装目录中解压缩该文件.
我在unix上运行R,我使用RODBC包连接到MS SQL服务器.我可以执行一个使用包返回结果的查询,但如果我在SQL查询的某处使用临时表,则返回一个空字符串给我.在浏览网页后,我认为问题可能是RODBC软件包是在最终用户使用标准SQL(而不是MS SQL)编写的时候编写的.我提供了以下代码作为示例.
有趣的是,如果我使用RJDBC包,则不存在临时表问题.但是,RJDBC软件包输入甚至80,000行(10列)的速度非常慢,并且会经常停顿,所以这也不是一个选择.有没有其他人遇到这个问题?如果有其他解决方案我没有想到,我很乐意听到它们.
看来我不是唯一有这个问题的人,也许这是一个R-Bug? http://r.789695.n4.nabble.com/RODBC-results-from-stored-procedure-td897462.html
谢谢
这是R的例子:
library(RODBC)
ch <- odbcConnect(insert your server info here)
qry4 <- "create table #tempTable(
Test int
)
insert into #tempTable
select 2
select * from #tempTable
drop table #tempTable
"
df4 <- sqlQuery(ch, qry4)
Run Code Online (Sandbox Code Playgroud) 我正在使用data.table包来返回j表达式中的函数闭包列表,作为approxfunstats包中函数的输出.基本上,在每个Date上,我想要一个闭包,它允许我根据确定的任意xval计算任意yval approxfun.
但是,approxfun仅当传递给函数的x的至少两个唯一值时才有效.在只有一个x的唯一值的情况下,我想返回一个返回y的唯一值的函数.
在下面的代码,我执行该步骤通过检查.N值并返回取决于是否不同的功能.N就是> 1.
library(data.table)
set.seed(10)
N <- 3
x <- data.table(Date = Sys.Date() + rep(1:N, each = 3), xval = c(0, 30, 90), yval = rnorm(N * 3))
x <- x[-c(2:3), ]
##interpolation happens correctly
x2 <- x[order(Date, xval), {
if(.N > 1){
afun <- approxfun(xval, yval, rule = 1)
}else{
afun <- function(v) yval
}
print(afun(30))
list(Date, afun = list(afun))
}, by = Date] …Run Code Online (Sandbox Code Playgroud) 从R 3.4.3升级到R 3.6.0时,我注意到以下特殊行为(两者都使用data.table 1.12.6)。在3.4.3中,以下代码导致all.equal语句为TRUE,但在3.6.0中,存在一个相对平均差,这是因为即使我们试图访问从“ a”组计算出的近似值,使用“ b”组中的值(可能是由于延迟评估而造成的)。在3.6.0中,可以基于以下问题在对roxofun的调用中添加一个copy语句来解决此问题: data.table中闭包的处理
对我而言,令人着迷的是我在3.4.3中没有得到错误。知道发生了什么变化吗?
library(data.table)
data <- data.table(
group = c(rep("a", 4), rep("b", 4)),
x = rep(c(.02, .04, .12, .21), 2),
y = c(
0.0122, 0.01231, 0.01325, 0.01374, 0.01218, 0.01229, 0.0133, 0.01379)
)
dtFuncs <- data[ , list(
func = list(stats::approxfun(x, y, rule = 2))
), by = group]
f <- function(group, x) {
dtResults <- CJ(group = group, x = x)
dtResults <- dtResults[ , {
.g <- group
f2 <- dtFuncs[group == …Run Code Online (Sandbox Code Playgroud) 我正在计算扩展窗口上的标准偏差,在每个点我重新计算标准偏差.这似乎是一个相当简单的事情,应该相对较快.但是,它需要比你想象的要长很多(约45秒).我在这里错过了什么吗?在Matlab中,这非常快.
t0 <- proc.time()[[3]]
z <- rep(0, 7000)
x <- rnorm(8000)
for(i in 1000:8000){
## print(i)
z[i] <- sd(x[1:i])
}
print(proc.time()[[3]]- t0)
Run Code Online (Sandbox Code Playgroud) 我们一直在尝试在redhat linux机器上安装RQuantLib.经过一个月(令人尴尬的长时间!)的反复试验,我们成功地编译了最新版本的boost和quantlib.我根本不是Linux专家,因此在运行install.packages("RQuantLib")时调试编译标志时遇到一些麻烦.Rcpp已经安装并且工作正常.
以下错误消息详细说明了该问题.我很困惑,因为我认为它应该需要的文件(libQuantLib.so.0)存在于/ usr/local/lib中.很抱歉,这很可能是一个愚蠢的问题,但我认为我们非常接近在Linux上访问R中的quantlib.
错误消息如下:
g++ -I/apps/R/R-3.0.0/include -DNDEBUG -I/usr/local/include -I"/apps/R/R-3.0.0/library/Rcpp/include" -g -O2 -I/usr/local/include -I/usr/loca
l/include/boost -I. -fpic -g -O2 -c zero.cpp -o zero.o
g++ -shared -L/usr/local/lib64 -o RQuantLib.so asian.o barrier_binary.o bermudan.o bonds.o calendars.o curves.o daycounter.o discount.o hullwhi
te.o implieds.o utils.o vanilla.o zero.o -L/apps/R/R-3.0.0/library/Rcpp/lib -lRcpp -Wl,-rpath,/apps/R/R-3.0.0/library/Rcpp/lib -L/usr/local/lib
-L/usr/local/lib -lQuantLib
installing to /apps/R/R-3.0.0/library/RQuantLib/libs
** R
** demo
** inst
** preparing package for lazy loading
** help
*** installing help indices
** building package indices
** testing if installed package can be …Run Code Online (Sandbox Code Playgroud) 什么时候用 calloc 实例化可变长度数组比用 C 中的“普通”数组声明更好?
考虑“数组声明”方法:
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{
int n = atoi(argv[1]);
int x[n];
for(int i = 1; i < n; i++){
x[i] = i;
printf("%i", x[i]);
printf("\n");
}
return 0;
}
Run Code Online (Sandbox Code Playgroud)
与 calloc 方法相比:
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{
int n = atoi(argv[1]);
int * x = (int*) calloc(n, sizeof(int));
for(int i = 1; i < n; i++){
x[i] = i;
printf("%i", x[i]);
printf("\n");
}
return …Run Code Online (Sandbox Code Playgroud) r ×6
data.table ×2
c ×1
closures ×1
installation ×1
package ×1
quantlib ×1
rodbc ×1
sql ×1
sql-server ×1