如何使用不同列的数据框进行循环?
How to for loop using different columns of data frame?
基本上我是在研究投资组合 return 问题。股票 return 就像:
AMZN <- c(0.1, 0.3, 0.4, 0.2)
BBY <- c(0.2, 0.4, 0.5, 0.3)
TGT <- c(-0.1, -0.3, -0.2,-0.5)
df1 <- data.frame(AMZN, BBY, TGT)
date <- c("2000-01-01","2000-02-01", "2000-03-01", "2000-04-01")
date <- as.Date(date, "%Y-%m-%d")
df1 <- cbind(date, df1)
xts <- xts(df1[,-1], order.by=df1[,1])
我想使用 Return.portfolio(xts, weight)
来计算投资组合 return。所以
体重就好
w1 <- c(0.2, 0.3, 0.1, 0.4)
w2 <- c(0.5, 0.1, 0.1, 0.3)
w3 <- c(0.1, 0.1, 0.4, 0.4)
Weights <- data.frame(w1, w2, w3)
由于分配了多组权重,我需要得到多个投资组合return。
我试过的代码是
for (i in colnames(Weights)){
Return.portfolio(xts, (Weights[[i]]))
}
尽管 R 没有报告任何错误,但我唯一得到的是一个值为“w3”的值。
我认为您可能需要先初始化一个 NULL
对象。可能是这样的
Return<-NULL
for (i in 1:ncol(Weights)){
Return<- cbind(Return, Return.portfolio(xts, (Weights[[i]])))
}
基本上我是在研究投资组合 return 问题。股票 return 就像:
AMZN <- c(0.1, 0.3, 0.4, 0.2)
BBY <- c(0.2, 0.4, 0.5, 0.3)
TGT <- c(-0.1, -0.3, -0.2,-0.5)
df1 <- data.frame(AMZN, BBY, TGT)
date <- c("2000-01-01","2000-02-01", "2000-03-01", "2000-04-01")
date <- as.Date(date, "%Y-%m-%d")
df1 <- cbind(date, df1)
xts <- xts(df1[,-1], order.by=df1[,1])
我想使用 Return.portfolio(xts, weight)
来计算投资组合 return。所以
体重就好
w1 <- c(0.2, 0.3, 0.1, 0.4)
w2 <- c(0.5, 0.1, 0.1, 0.3)
w3 <- c(0.1, 0.1, 0.4, 0.4)
Weights <- data.frame(w1, w2, w3)
由于分配了多组权重,我需要得到多个投资组合return。 我试过的代码是
for (i in colnames(Weights)){
Return.portfolio(xts, (Weights[[i]]))
}
尽管 R 没有报告任何错误,但我唯一得到的是一个值为“w3”的值。
我认为您可能需要先初始化一个 NULL
对象。可能是这样的
Return<-NULL
for (i in 1:ncol(Weights)){
Return<- cbind(Return, Return.portfolio(xts, (Weights[[i]])))
}