小编use*_*239的帖子

如何使用Rcpp加速for循环?

我创建了一个for循环,我想使用Rcpp库来加速它.我对C++不太熟悉.你能帮助我更快地完成我的功能吗?谢谢您的帮助!

我已将算法,代码以及输入和输出与sessionInfo一起包括在内.

这是我的算法:

如果当前价格高于先前价格,则在名为TR的列中标记(+1)

如果当前价格低于先前价格,则在名为TR的列中标记(-1)

如果当前价格与先前价格相同,则在名为TR的列中标记与先前价格相同的价格

这是我的代码:

price <- c(71.91, 71.82, 71.81, 71.81, 71.81, 71.82, 71.81, 71.81, 71.81, 
           71.82, 71.81, 71.81, 71.8, 71.81, 71.8, 71.81, 71.8, 71.8, 71.8, 
           71.8, 71.81, 71.81, 71.81, 71.81, 71.81, 71.81, 71.81, 71.81, 
           71.81, 71.82, 71.81, 71.81, 71.81, 71.81, 71.81, 71.81, 71.8, 
           71.8, 71.81, 71.81, 71.81, 71.81, 71.82, 71.82, 71.81, 71.81, 
           71.81, 71.81, 71.81, 71.81, 71.81, 71.82, 71.82, 71.82, 71.82, 
           71.82, 71.82, 71.82, 71.81, 71.82, 71.82, 71.82, 71.82, 71.82, 
           71.82, 71.82, 71.82, 71.82, 71.81, …
Run Code Online (Sandbox Code Playgroud)

performance for-loop r rcpp

15
推荐指数
3
解决办法
4423
查看次数

无法再将数据帧转换为xts对象

几个月前我编写了一个将数据帧转换为xts对象的函数.它曾经工作,现在,它不再工作.我不知道如何解决它.我再次安装了xts包,但没有用.我搜索了stackoverflow并用Google搜索了它.我将不胜感激任何帮助.

谢谢!

这是我得到的错误:

Error in .Call("dimnames_zoo", x) : 
"dimnames_zoo" not resolved from current namespace (xts) 
Run Code Online (Sandbox Code Playgroud)

这是我的功能:

MakeXts<-function(data){

  library(xts)

  data$Date<-strptime(paste(data$Date,data$Time),"%m/%d/%Y %H:%M:%S")
  data<-data[,-2] 
  data.xts<-xts(data[,-1],order.by=as.POSIXct(data[,1]))

  return (data.xts)

}
Run Code Online (Sandbox Code Playgroud)

这是我的代码:

myData.xts <- MakeXts(myData)
Run Code Online (Sandbox Code Playgroud)

和数据:

myData <- structure(list(Date = c("02/12/2015", "02/12/2015", "02/12/2015", 
"02/12/2015", "02/12/2015", "02/12/2015", "02/12/2015", "02/12/2015", 
"02/12/2015", "02/12/2015", "02/12/2015", "02/12/2015", "02/12/2015", 
"02/12/2015", "02/12/2015", "02/12/2015", "02/12/2015", "02/12/2015", 
"02/12/2015", "02/12/2015", "02/12/2015", "02/12/2015", "02/12/2015", 
"02/12/2015", "02/12/2015", "02/12/2015", "02/12/2015", "02/12/2015", 
"02/12/2015", "02/12/2015"), Time = c("16:00:00", "16:00:12", 
"16:00:46", "16:00:49", "16:01:18", "16:01:25", "16:02:00", "16:02:00", 
"16:02:00", "16:02:06", "16:03:02", "16:03:02", "16:03:02", "16:03:02", …
Run Code Online (Sandbox Code Playgroud)

r xts

8
推荐指数
0
解决办法
715
查看次数

如何加速或矢量化for循环?

我想通过矢量化或使用Data.table或其他方法来提高for循环的速度.我必须在1,000,000行上运行代码,我的代码非常慢.

代码是相当不言自明的.我在下面提供了一个解释,以防万一.我已经包含了函数的输入和输出.希望你能帮助我更快地完成这项功能.

我的 目标是将矢量"Volume"分区,其中每个bin等于100份.向量"卷"包含交易的股票数量.这是它的样子:

head(Volume, n = 60)
[1]  5  3  1  5  3  1  1  1  1  1  1  1 18  1  1 18  2  7 13  2  7 13  3  2  1  1  3  2  1  1  1
[32]  1  6  6  1  1  1  1  1  1  1  1 18  2  1  1  2  1 14 18  2  1  1  2  1 14  1  1  9  5
Run Code Online (Sandbox Code Playgroud)

向量"binIdexVector"与"Volume"的长度相同,它包含bin号; 即前100个股票的每个元素得到数字1,接下来100个股票的每个元素得到数字2,接下来100个股票的每个元素得到数字3,依此类推.这是矢量的样子:

 head(binIdexVector, n = 60)
[1] 1 1 …
Run Code Online (Sandbox Code Playgroud)

performance for-loop r vectorization rcpp

7
推荐指数
1
解决办法
678
查看次数

如何交替连接3个字符串

我有3个字符串:

a<-c("a1","a2","a3")
b<-c("b1","b2","b3")
c<-c("c1","c2","c3")
Run Code Online (Sandbox Code Playgroud)

如何获得以下输出:

"a1","b1","c1","a2","b2","c2","a3","b3","c3"
Run Code Online (Sandbox Code Playgroud)

这是我尝试过的:

paste(a,b,c,sep='","')
Run Code Online (Sandbox Code Playgroud)

我得到了什么:

[1] "a1\",\"b1\",\"c1" "a2\",\"b2\",\"c2" "a3\",\"b3\",\"c3"

有办法吗?谢谢.

string r concatenation

5
推荐指数
1
解决办法
2073
查看次数

如何使用单个向量创建具有多列的矩阵

是否有更快的方法来获取向量并将其转换为10列矩阵,如下面的输出?

我有一个9000个元素的向量,我正在尝试创建200个列,从最近的观察到之前的200个观察,每个列向后.

在下面的例子中,数字10代表向量中的第10个obs,9代表第9个obs,...,数字1代表向量中的第一个观察.

     [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
 [1,]   10    9    8    7    6    5    4    3    2     1
 [2,]   11   10    9    8    7    6    5    4    3     2
 [3,]   12   11   10    9    8    7    6    5    4     3
 [4,]   13   12   11   10    9    8    7    6    5     4
 [5,]   14   13   12   11   10    9    8    7    6     5
 [6,]   15   14   13   12   11   10    9    8    7     6
 [7,] …
Run Code Online (Sandbox Code Playgroud)

r

4
推荐指数
2
解决办法
89
查看次数

如何对曲线下面积的计算进行矢量化

我的目标:我每5行计算一次xts列的曲线下面积.

我的目标:我想知道R中是否有一个函数可以更快地(向量化它)而不是从myxts5的列中生成一个向量然后循环计算.

谢谢你的帮助.

我已经包含了我的代码,输出和数据集:

#create an xts object
library(xts)
myxts5<-xts(dat5[,2:7],order.by=as.POSIXct(dat5[,1]))
colnames(myxts5)<-c("Open","High","Low","Close","Volume","RSI_10")

#make the data reproducible
dput(myxts5,file='so4.txt')

#my method to calculate the entire area under the RSI
library(MESS)

y1<-as.vector(myxts5[11:nrow(myxts5),"RSI_10"]) #remove the first 10 NAs
x1<-1:length(y1)

AUC_RSI10<-NA
for(i in 1:(length(y1)-4))
{
  AUC_RSI10[i]<-auc(x1,y1,from=i,to=i+4,type="spline") 

}

#output the result
dput(AUC_RSI10,file='so5.txt')
Run Code Online (Sandbox Code Playgroud)

这是我的输出:

c(212.42031469304, 212.798819901101, 209.986805467201, 204.085562604063, 
197.984367949833, 190.26277666882, 186.077746687353, 175.748595915665, 
153.079882459862, 130.009179454897, 102.067828644029, 93.1546072252816, 
106.253169598421, 126.695279601823, 156.84779427326, 171.19433284721, 
177.724612560769, 176.407343545939, 180.185730377015, 185.540559407078, 
181.492038514392, 189.691635230233, 184.490969841544, 188.753967108042, 
207.705900307578, 214.048826298562, 218.30216750124, 212.29968278624, 
199.551248663318, 188.776300102749, 182.52612752936, 181.256931078184, 
186.756042540598, 192.301043062924, …
Run Code Online (Sandbox Code Playgroud)

r auc

1
推荐指数
1
解决办法
380
查看次数

标签 统计

r ×6

for-loop ×2

performance ×2

rcpp ×2

auc ×1

concatenation ×1

string ×1

vectorization ×1

xts ×1