Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
braverock
GitHub Repository: braverock/portfolioanalytics
Path: blob/master/R/utility.combine.R
1433 views
1
2
3
#' Combine objects created by optimize.portfolio
4
#'
5
#' This function takes a list of objects created by \code{\link{optimize.portfolio}}
6
#' and sets the class name attribute to 'opt.list' for use in generic functions
7
#'
8
#' @param x a list of objects created by \code{\link{optimize.portfolio}}
9
#' @return an \code{opt.list} object
10
#' @export
11
combine.optimizations <- function(x){
12
if(!is.list(x)) stop("x must be passed in as a list")
13
for(i in 1:length(x)){
14
if(!(inherits(x[[i]], "optimize.portfolio") | inherits(x[[i]], "optimize.portfolio.rebalancing"))){
15
stop("All objects in x must be of class 'optimize.portfolio' or 'optimize.portfolio.rebalancing'")
16
}
17
}
18
class(x) <- "opt.list"
19
return(x)
20
}
21
22
#' Combine a list of portfolio objects
23
#'
24
#' This function takes a list of objects created by \code{\link{portfolio.spec}}
25
#' and sets the class name attribute to 'portfolio.list' for use in generic functions
26
#'
27
#' @param x a list of objects created by \code{\link{portfolio.spec}}
28
#' @return a \code{portfolio.list} object
29
#' @export
30
combine.portfolios <- function(x){
31
if(!is.list(x)) stop("x must be passed in as a list")
32
for(i in 1:length(x)){
33
if(!inherits(x[[i]], "portfolio")) stop("All objects in x must be of class 'portfolio'")
34
}
35
class(x) <- c("portfolio.list", "portfolio")
36
return(x)
37
}
38
39
40
###############################################################################
41
# R (https://r-project.org/) Numeric Methods for Optimization of Portfolios
42
#
43
# Copyright (c) 2004-2021 Brian G. Peterson, Peter Carl, Ross Bennett, Kris Boudt
44
#
45
# This library is distributed under the terms of the GNU Public License (GPL)
46
# for full details see the file COPYING
47
#
48
# $Id$
49
#
50
###############################################################################
51
52