Skip to content

Commit aca5688

Browse files
modified changes
1 parent ff4746e commit aca5688

File tree

2 files changed

+16
-11
lines changed

2 files changed

+16
-11
lines changed

R/print.data.table.R

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -111,22 +111,22 @@ print.data.table = function(x, topn=getOption("datatable.print.topn"),
111111
expression = "<expr>", ordered = "<ord>")
112112
classes = classes1(x)
113113
col_names <- colnames(toprint)
114-
classes <- sapply(col_names, function(col_name) {
115-
if (grepl("^index:", col_name)) {
116-
"index"
114+
index_cols <- paste0("index:", indices(x))
115+
for (col_name in col_names) {
116+
if (col_name %in% index_cols) {
117+
classes[col_name] <- "index"
117118
} else if (col_name %in% names(x)) {
118119
cls <- class(x[[col_name]])
119-
if (is.list(cls)) cls <- unlist(cls) # Ensure it's a character vector
120-
if (length(cls) == 0) cls <- "unknown" # Handle empty cases
121-
cls[1] # Take only the first class name
120+
if (is.list(cls)) cls <- unlist(cls)
121+
if (length(cls) == 0) cls <- "unknown"
122+
classes[col_name] <- cls[1]
122123
} else {
123-
"unknown"
124+
classes[col_name] <- "unknown"
124125
}
125-
})
126-
abbs = unname(class_abb[classes])
127-
abbs[classes == "index"] <- "<index>"
126+
}
127+
abbs = unname(class_abb[classes[col_names]])
128+
abbs[col_names %in% index_cols] <- "<index>"
128129
if ( length(idx <- which(is.na(abbs))) ) abbs[idx] = paste0("<", classes[idx], ">")
129-
stopifnot(length(abbs) == ncol(toprint))
130130
toprint = rbind(abbs, toprint)
131131
rownames(toprint)[1L] = ""
132132
}

inst/tests/tests.Rraw

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18784,6 +18784,11 @@ ans = c(
1878418784
"10: 83 64 41 9 9")
1878518785
# test where topn isn't necessary
1878618786
test(2264.8, print(DT, show.indices=TRUE), output=ans)
18787+
# printing does not fail when indices are present
18788+
test(2264.9, {
18789+
suppressWarnings( print(DT, show.indices=TRUE) )
18790+
TRUE
18791+
})
1878718792

1878818793
# integer64 columns print even when bit64 isn't loaded
1878918794
if (test_bit64) local({

0 commit comments

Comments
 (0)