-
Notifications
You must be signed in to change notification settings - Fork 117
/
split.r
48 lines (46 loc) · 1.03 KB
/
split.r
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
#' Subset splits.
#'
#' Subset splits, ensuring that labels keep matching
#'
#' @keywords internal
#' @param x split object
#' @param i index
#' @param ... unused
#' @method [ split
#' @rdname get-split
#' @export
"[.split" <- function(x, i, ...) {
structure(
NextMethod(),
class = c("split", "list"),
split_type = attr(x, "split_type"),
split_labels = attr(x, "split_labels")[i, , drop = FALSE]
)
}
#' Convert split list to regular list.
#'
#' Strip off label related attributed to make a strip list as regular list
#'
#' @keywords internal
#' @param x object to convert to a list
#' @param ... unused
#' @method as.list split
#' @export
as.list.split <- function(x, ...) {
attr(x, "split_type") <- NULL
attr(x, "split_labels") <- NULL
class(x) <- setdiff(class(x), "split")
x
}
#' Print split.
#'
#' Don't print labels, so it appears like a regular list
#'
#' @keywords internal
#' @param x object to print
#' @param ... unused
#' @method print split
#' @export
print.split <- function(x, ...) {
print(as.list(x))
}