我有一个月回报矩阵和一个预测矢量.我希望尽量降低给定回报水平的风险(基于预测).预测只是资产价值的预期变化百分比.风险基于向量的第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) 有没有办法在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) 我可以轻松地在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)
但是,当我替换mat为myMatrixI时出现此错误:
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比其他 …
我有一个pptx格式的演示文稿,我需要经常使用R脚本生成的图表进行更新.我想自动更换图表,而不必在屏幕之间复制和粘贴很多次.我一直在使用ReporteRs包,看起来很有希望,但我无法弄清楚如何简单地替换演示文稿中已有的图表.ReporteRs上的所有文档都表明您必须添加新幻灯片,然后将图表放在新幻灯片上.有没有办法说'删除幻灯片7上的图表并将其替换为图表XXX?' ReporteRs是最好的方案吗?
我试图更改矩阵的值,以便对于行名称等于列名称的每个元素,结果矩阵的值为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,但是在投资组合优化方面,我遇到了另一个障碍.我有一个程序可以为一组资产吐出.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'
我正在尝试在网页上的文本框中输入文本。
<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) 我有两个矩阵,我想将它们相乘,这样得到的矩阵的每个值都是前两个矩阵中相同列的滚动和 - 乘积.
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) 这似乎应该很容易,但我无法弄清楚.我想总结我的矩阵中具有相同名称的所有列.因此,在下面的示例中,我想最终得到另一个只有三列的矩阵.
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.