R: Создать пользовательский вывод из списка объектов
У меня есть список, в котором хранятся различные типы данных и объектов:
header <- "This is a header."
a <- 10
b <- 20
c <- 30
w <- 1:10
x <- 21:30
y <- 51:60
z <- 0:9
mylist <- list(header = header,
const = list(a = a, b = b, c = c),
data = data.frame(w,x,y,z))
Теперь я хочу, чтобы R отобразил этот список в следующем формате:
This is a header.
Values: a: 10 b: 20 c: 30
Data: w x y z
1 1 21 51 0
2 2 22 52 1
3 3 23 53 2
4 4 24 54 3
5 5 25 55 4
6 6 26 56 5
7 7 27 57 6
8 8 28 58 7
9 9 29 59 8
10 10 30 60 9
Есть ли удобный способ сделать это?
1 ответ
Решение
Если вы хотите использовать этот вид print
регулярно я бы использовал class
следующее:
class(mylist) <- "myclass"
print.myclass <- function(x, ...){
cat(x$header,"\n\n")
cat("Values: ", sprintf("%s: %s", names(x$const), x$const), "\n\n")
cat("Data:\n")
print(x$data, ...)
}
Если вы хотите узнать больше о универсальной функции, взгляните на http://adv-r.had.co.nz/OO-essentials.html
Печать теперь приводит к:
> mylist #equal to print(mylist). Thats why we extended print with print.myclass
This is a header.
Values: a: 10 b: 20 c: 30
Data:
w x y z
1 1 21 51 0
2 2 22 52 1
3 3 23 53 2
4 4 24 54 3
5 5 25 55 4
6 6 26 56 5
7 7 27 57 6
8 8 28 58 7
9 9 29 59 8
10 10 30 60 9
Благодарю Ананду Махто и Дэвида Аренбурга за улучшение моего первоначального ответа.