小编use*_*169的帖子

R:基于历史数据的优化

我有一个月回报矩阵和一个预测矢量.我希望尽量降低给定回报水平的风险(基于预测).预测只是资产价值的预期变化百分比.风险基于向量的第5个百分点,该向量是通过月度回报传递给定投资组合的结果:

library(nloptr)
library(ggplot2)

#load csv files
balances<-as.matrix(t(c(-3300000, 2000000, -7700000, 5500000, -4000000, 1000000)))
forecast<-as.matrix(t(c(-0.000768006, 0.000635124, 0.001526249, -0.008919934, 0.000152549, 0.001271481)))
mReturns<-read.csv(file="C:/Users/Desktop/mReturns.csv", header=TRUE, sep=",", row.names=1)

mReturns<-round(mReturns, digits=8)
forecast<-round(forecast, digits=8)

colnames(balances)<-letters[1:ncol(balances)]
colnames(forecast)<-letters[1:ncol(forecast)]
colnames(mReturns)<-letters[1:ncol(forecast)]

#Minimize Variance:
fn <- function(H) {
    X<-balances * (1 - H)
    Y<-t(t(mReturns) * as.vector(X))
    return(quantile(rowSums(Y), .05, na.rm=TRUE))
}

fn2 <- function(H) {
    return(-fn(H))
}

#For a given forecast:
target<-0
eqn <- function(H) {
    X <- balances * (H)
    return(sum(X * forecast) - target)
}

loops<-6
n<-length(balances)

# Initialize a matrix to …
Run Code Online (Sandbox Code Playgroud)

optimization r

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

按行号组合3个数组

有没有办法在R中组合三个数组,以便第一个数组的第一行后跟第二个数组的第一行,然后是第三个数组的第三行?所以,如果我运行以下代码:

> number1<-rbind(rep("A",3), rep("B",3), rep("C",3))
> number1
     [,1] [,2] [,3]
[1,] "A"  "A"  "A" 
[2,] "B"  "B"  "B" 
[3,] "C"  "C"  "C" 
> number2<-rbind(rep(1,3), rep(2,3), rep(3,3))
> number2
     [,1] [,2] [,3]
[1,]    1    1    1
[2,]    2    2    2
[3,]    3    3    3
> number3<-rbind(rep("X",3), rep("Y",3), rep("Z",3))
> number3
     [,1] [,2] [,3]
[1,] "X"  "X"  "X" 
[2,] "Y"  "Y"  "Y" 
[3,] "Z"  "Z"  "Z"
Run Code Online (Sandbox Code Playgroud)

结果如下所示:

      [,1] [,2] [,3]
 [1,] "A"  "A"  "A" 
 [2,] "1"  "1"  "1" 
 [3,] "X"  "X"  "X" …
Run Code Online (Sandbox Code Playgroud)

arrays r

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

R circlize:circos.initialize中的错误

我可以轻松地在CRAN上的包描述中遵循Circlize示例:

library('circlize')
set.seed(123)
mat = matrix(sample(1:100, 18, replace = TRUE), 3, 6)
rownames(mat) = letters[1:3]
colnames(mat) = LETTERS[1:6]
### basic settings
par(mfrow = c(3, 2))
par(mar = c(1, 1, 1, 1))
chordDiagram(mat)
Run Code Online (Sandbox Code Playgroud)

但是,当我替换matmyMatrixI时出现此错误:

Error in circos.initialize(factors = factor(cate, levels = cate), xlim = cbind(rep(0,  : 
  Since `xlim` is a matrix, it should have same number of rows as the length of the level of `factors` and number of columns of 2.
Run Code Online (Sandbox Code Playgroud)

有人可以解释我收到这条消息的原因吗?我看不出差别之间mat,并myMatrix比其他 …

plot r chord-diagram circlize

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

R ReporteRs:编辑现有幻灯片

我有一个pptx格式的演示文稿,我需要经常使用R脚本生成的图表进行更新.我想自动更换图表,而不必在屏幕之间复制和粘贴很多次.我一直在使用ReporteRs包,看起来很有希望,但我无法弄清楚如何简单地替换演示文稿中已有的图表.ReporteRs上的所有文档都表明您必须添加新幻灯片,然后将图表放在新幻灯片上.有没有办法说'删除幻灯片7上的图表并将其替换为图表XXX?' ReporteRs是最好的方案吗?

powerpoint r reporters

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

更改行名称等于列名称的矩阵的值

我试图更改矩阵的值,以便对于行名称等于列名称的每个元素,结果矩阵的值为1.

> z<-matrix(0, nrow=10, ncol=8)
> colnames(z)<-letters[1:8]
> rownames(z)<-c("f", "c", "a", "f", "a", "b", "f", "b", "h", "c")
> z
  a b c d e f g h
f 0 0 0 0 0 0 0 0
c 0 0 0 0 0 0 0 0
a 0 0 0 0 0 0 0 0
f 0 0 0 0 0 0 0 0
a 0 0 0 0 0 0 0 0
b 0 0 0 0 0 0 …
Run Code Online (Sandbox Code Playgroud)

r matrix

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

R quadprog错误:( list)对象无法强制输入'double'

我正在理解R,但是在投资组合优化方面,我遇到了另一个障碍.我有一个程序可以为一组资产吐出.csv文件.第一个是投资组合的方差/协方差矩阵:covar.csv,第二个是资产的预期收益:fwdCost.csv.我试图设置等于-2,200,000的回报最小化投资组合的风险(权重必须介于0和1之间).我认为我的问题与我的.csv文件有关,但我无法弄清楚为什么解决.QP不喜欢它们.

> library(quadprog)
> dmat<-read.csv(file="C:/Users/Desktop/RFrontier/covar.csv", head=TRUE, sep=",")
> dvec<-matrix(0, 1,length(dmat))
> amat<-read.csv(file="C:/Users/Desktop/RFrontier/fwdCost.csv", header=TRUE, sep=",")
> amat<-t(amat)
> x<-matrix(0, length(dmat), length(dmat))
> diag(x)<-1
> amat<-cbind(amat,x)
> x<--x
> amat<-cbind(amat,x)
> bvec<-c(-2200000, rep(0, length(dmat)), rep(-1,length(dmat)))
> solve.QP(dmat, dvec, amat, bvec)
Run Code Online (Sandbox Code Playgroud)

产生此错误:solve.QP(dmat,dvec,amat,bvec)中的错误:( list)对象无法强制键入'double'

optimization r

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

填写网页文本框的 Excel VBA 问题

我正在尝试在网页上的文本框中输入文本。

<div lightning-input_input="" class="slds-form-element__control slds-grow">
<input lightning-input_input="" type="text" id="input-32" placeholder="Enter an address, city, zip, or place" class="slds-input">
</div>
Run Code Online (Sandbox Code Playgroud)

我在我的 excel 宏中使用这一行来尝试在该框中输入“test”:

Application.Wait DateAdd("s", 5, Now)
objIE.document.all.item("input-32")(0).Value="test"
Run Code Online (Sandbox Code Playgroud)

此代码适用于其他站点,但我无法弄清楚为什么它不适用于上面的对象。

完整代码:

sub searchbot()
 Dim objIE as InternetExplorer
 Dim aEle as IHTMLElement
 
 Set objIE = New InternetExplorer
 objIE.visible = True
 objIE.navigate "https://myturnvolunteer.ca.gov/s/#search"

 Do While objIE.Busy = True or objIE.readyState <>4: DoEvents:  Loop
 'That doesnt seem to wait long enough so
 Application.Wait DateAdd("s", 5, Now)

 objIE.document.all.Item("radioButtonGroup")(1).Click  'this works!
 Set device = objIE.document.getElementsByClassName("input-slds") 'Error!
 device(0).Value = …
Run Code Online (Sandbox Code Playgroud)

html excel vba

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

按列滚动总和产品

我有两个矩阵,我想将它们相乘,这样得到的矩阵的每个值都是前两个矩阵中相同列的滚动和 - 乘积.

x<-matrix(seq(1:30), ncol=3)
x
      [,1] [,2] [,3]
 [1,]    1   11   21
 [2,]    2   12   22
 [3,]    3   13   23
 [4,]    4   14   24
 [5,]    5   15   25
 [6,]    6   16   26
 [7,]    7   17   27
 [8,]    8   18   28
 [9,]    9   19   29
[10,]   10   20   30
y<-matrix(rep(seq(1:3), 4), ncol=3)/10
y
     [,1] [,2] [,3]
[1,]  0.1  0.2  0.3
[2,]  0.2  0.3  0.1
[3,]  0.3  0.1  0.2
[4,]  0.1  0.2  0.3
Run Code Online (Sandbox Code Playgroud)

所以结果看起来像:

1.8 9.9     20.3
2.5 10.7    21.2
3.2 …
Run Code Online (Sandbox Code Playgroud)

r matrix rcpp

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

R按行名称对行进行求和

这似乎应该很容易,但我无法弄清楚.我想总结我的矩阵中具有相同名称的所有列.因此,在下面的示例中,我想最终得到另一个只有三列的矩阵.

set.seed(4)
z<-matrix(sample(1:10,20, replace=T), nrow=4)
colnames(z)<-c("a","c","b","a","b")
z
     a  c  b  a  b
[1,] 6  9 10  2 10
[2,] 1  3  1 10  6
[3,] 3  8  8  5 10
[4,] 3 10  3  5  8
Run Code Online (Sandbox Code Playgroud)

应该产量:

     a  c  b
[1,] 8  9 20
[2,] 11  3  7
[3,] 8  8  18
[4,] 8 10  11
Run Code Online (Sandbox Code Playgroud)

我试过了:

z<-aggregate(colnames(z), data=z, sum)
Run Code Online (Sandbox Code Playgroud)

但它不起作用.如果可能的话,我更愿意使用基数R.

r matrix

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

标签 统计

r ×8

matrix ×3

optimization ×2

arrays ×1

chord-diagram ×1

circlize ×1

excel ×1

html ×1

plot ×1

powerpoint ×1

rcpp ×1

reporters ×1

vba ×1