我有这些数据
> a
a b c
1 1 -1 4
2 2 -2 6
3 3 -3 9
4 4 -4 12
5 5 -5 6
> b
d e f
1 6 -5 7
2 7 -4 4
3 8 -3 3
4 9 -2 3
5 10 -1 9
> cor(a,b)
d e f
a 1.0000000 1.0000000 0.1767767
b -1.0000000 -1.000000 -0.1767767
c 0.5050763 0.5050763 -0.6964286
Run Code Online (Sandbox Code Playgroud)
我想要的结果就是:
cor(a,d) = 1
cor(b,e) = -1
cor(c,e) = 0.6964286
Run Code Online (Sandbox Code Playgroud) 我需要在嵌套列表中获取最大变量.对于某个站号"s"和某个成员"m",mylist[[s]][[m]]具有以下形式:
station date.time member bias
6019 2011-08-06 12:00 mbr003 86
6019 2011-08-06 13:00 mbr003 34
Run Code Online (Sandbox Code Playgroud)
对于每个站,我需要获得bias所有成员的最大值.因为s = 3,我设法通过:
library(plyr)
var1 <- mylist[[3]]
var2 <- lapply(var1, `[`, 4)
var3 <- laply(var2, .fun = max)
max.value <- max(var3)
Run Code Online (Sandbox Code Playgroud)
是否有避免在第二行的列数"4"和使用变量名的方式$bias在lapply或做的更好的办法?
我正在寻找一种从更大的表中提取大量行的快速方法.我的表顶部如下:
> head(dbsnp)
snp gene distance
rs5 rs5 KRIT1 1
rs6 rs6 CYP51A1 1
rs7 rs7 LOC401387 1
rs8 rs8 CDK6 1
rs9 rs9 CDK6 1
rs10 rs10 CDK6 1
Run Code Online (Sandbox Code Playgroud)
尺寸:
> dim(dbsnp)
[1] 11934948 3
Run Code Online (Sandbox Code Playgroud)
我想选择列表中包含rownames的行:
> head(features)
[1] "rs1367830" "rs5915027" "rs2060113" "rs1594503" "rs1116848" "rs1835693"
> length(features)
[1] 915635
Run Code Online (Sandbox Code Playgroud)
毫不奇怪,这样做的直接方式temptable = dbsnp[features,]需要相当长的时间.
我一直在研究如何通过R中的sqldf包来实现这一点.我认为这可能会更快.不幸的是,我无法弄清楚如何在SQL中选择具有某些rownames的行.
谢谢.
我有两个矢量e和g.我想知道每个元素中元素e的百分比g是否较小.在R中实现这一点的一种方法是:
set.seed(21)
e <- rnorm(1e4)
g <- rnorm(1e4)
mf <- function(p,v) {100*length(which(v<=p))/length(v)}
mf.out <- sapply(X=e, FUN=mf, v=g)
Run Code Online (Sandbox Code Playgroud)
使用大型e或者g,这需要花费大量时间来运行.如何更改或修改此代码以使其运行更快?
注意:mf上面的函数基于messdismo包中函数的代码.
我对R很新,并试图回溯我在WealthLab中编写的策略.
几个我不明白的东西(它显然不起作用:)
我没有很好地将关闭价格转换为向量...或某种向量,但它从结构开始,我真的不明白这个函数的作用.这就是为什么我的系列[,1]调用可能不起作用.
n < - nrow(系列)也不起作用,但我需要循环
所以我想如果我得到这两个问题的答案我的策略应该有效......我非常感谢任何帮助......即使有其他语言的编程经验,看起来也很复杂
#rm(list = ls(all = TRUE))
#import data, default is yahoo
require(quantmod)
series <- getSymbols('AAPL',from='2013-01-01')
#generate HLOC series
close <- Cl(AAPL)
open <- Op(AAPL)
low <-Lo(AAPL)
high <- Hi(AAPL)
#setting parameters
lookback <- 24 #24 days ago
startMoney <- 10000
#Empty our time series for position and returns
f <- function(x) 0 * x
position <- apply(series[,1],FUN=f)
colnames(position)="long_short"
returns <- apply(series[,1],FUN=f)
colnames(returns)="Returns"
trades = returns
colnames(trades)="Trades"
amount = returns
colnames(amount) = "DollarAmount"
amt[seq(1,lookback)] …Run Code Online (Sandbox Code Playgroud) HTML5规范允许一次上传多个文件<input type="file", ..., multiple="multiple">.有没有办法利用Rook R包来利用这个?
这是我的尝试,但似乎只显示了一个选定的文件:
library(Rook)
app <- function(env) {
req <- Rook::Request$new(env)
res <- Rook::Response$new()
res$write(
'<html><body>
Select files:
<form method="POST" enctype="multipart/form-data">
<input type="file" name="data" multiple="multiple">
<input type="submit" name="Upload">
</form>
</body></html>')
if (!is.null(req$POST())){
data <- req$POST()[['data']]
res$write("<pre>")
res$write(paste(capture.output(req$POST(),file=NULL),collapse='\n'))
res$write("</pre>")
res$write("<pre>")
res$write(paste(capture.output(data$filename,file=NULL),collapse='\n'))
res$write("</pre>")
}
res$finish()
}
s <- Rhttpd$new()
s$add(app=RhttpdApp$new(name="app", app=app))
s$start(listen="127.0.0.1", quiet=FALSE)
s$browse(1)
#s$stop(); s$remove(all=TRUE); rm(s)
Run Code Online (Sandbox Code Playgroud) 我试图通过以下命令使用R中的预测包从季节性arima模型生成模拟:
simulate(model_temp)
Run Code Online (Sandbox Code Playgroud)
model_temp将arima()函数应用于我观察到的时间序列的结果在哪里,顺便提一下,我将模型指定为ARIMA(2,1,2)(0,1,2)[12]模型.
但是,当我尝试这个时,我收到以下错误:
Error in diffinv.vector(x, lag, differences, xi) :
NA/NaN/Inf in foreign function call (arg 1)
Run Code Online (Sandbox Code Playgroud)
任何人都可以解释为什么会这样(以及如何避免这个问题)?
我应该进一步补充一点,我知道我应用的模型和产生model_temp的模型不是生成该系列的模型,但是,我仍然希望从该模型(或任何其他模型)生成模拟).
最后,是否可以通过仅指定ar,d,ma,sar,sd,sma和sigma参数从而无需首先创建正确ARIMA类型的对象,从季节性ARIMA模型生成模拟?
感谢您的任何帮助,
乔纳森
请将此数据结构放入R中以重现我的示例:
dX <- structure(c(3272.1, 3271.48, 3281.03, 3267.08, 3260.65, NA, 1616.3,
1620.1, 1639.9, 1637.4, 1669.6, 1662.2, 528.385, 529.268, 531.022,
532.424, NA, NA), .indexTZ = "", class = c("xts", "zoo"), .indexCLASS = c("POSIXct",
"POSIXt"), tclass = c("POSIXct", "POSIXt"), tzone = "", index = structure(c(1345147200,
1345406400, 1345492800, 1345579200, 1345665600, 1345752000), tzone = "", tclass = c("POSIXct",
"POSIXt")), .Dim = c(6L, 3L), .Dimnames = list(NULL, c("M1WO.Index",
"GC1.COMB.Comdty", "JGAGGUSD.Index")))
Run Code Online (Sandbox Code Playgroud)
现在试试这段代码:
library(PerformanceAnalytics)
library(quantmod)
library(timeSeries)
charts.PerformanceSummary(R = dX)
Run Code Online (Sandbox Code Playgroud)
并得到此错误:
Error in UseMethod("time<-") :
no applicable method for …Run Code Online (Sandbox Code Playgroud) 我是R的新手,我在创建技术指标方面遇到了一些问题.更具体地说,我想创建一个指标,Fibonacci它将被添加到chartSeries并且将由5条水平线组成.我正在处理的数据是股票的收盘价.因此,我想要创建的图表将在最高收盘价的点处有一条水平线,在最小收盘价的点上有一条水平线,在前两条之间有三条水平线.我为了获取股票收盘价的时间序列的五个值而编写的代码如下:
Fibonacci <- function(x) {
x <- try.xts(x, error = as.matrix)
n <- nrow(x)
min <- runMin(x,n=n)
max <- runMax(x,n=n)
high <- 0.62*(max-min) + min
middle <- 0.5*(max-min) + min
low <- 0.38*(max-min) + min
res <-cbind(na.spline(min),na.spline(max),na.spline(high),
na.spline(middle),na.spline(low))
colnames(res)<- c("min","max","high","middle","low")
reclass (res, x)
}
Run Code Online (Sandbox Code Playgroud)
我还编写了以下代码,以便将技术指标添加到现有chartSeries的quantmod包图:
addFibonacci<- function(col = "red",overlay = TRUE){
stopifnot("package:TTR" %in% search() || require("TTR", quietly = TRUE))
lchob <- quantmod:::get.current.chob()
x <- as.matrix(lchob@xdata)
chobTA <- new("chobTA")
chobTA@new <- !overlay
if …Run Code Online (Sandbox Code Playgroud) 如果我有一个v名字的向量:
John Murray Lisa Mike Joe Ann
0.0832090 0.0475580 -0.2797860 0.1086225 0.0104590 -0.0028250
Run Code Online (Sandbox Code Playgroud)
什么是时间的复杂性v['Joe']与v[4]?我想前者会采用O(log n),因为它应该涉及二进制搜索,但我仍然不确定后者是否是O(1).
此外,结果v是否适用于列表/数据框而不是原子向量的情况?
r ×10
quantmod ×2
correlation ×1
data.table ×1
forecasting ×1
html5 ×1
row ×1
sapply ×1
sql ×1
sqldf ×1
which ×1
xts ×1
zoo ×1