R - 如何在矩阵(或类似结构)中存储自定义对象?

时间:2017-06-26 22:33:31

标签: r class object matrix

我试图用自定义类的对象填充矩阵。但似乎这不起作用。这是我的尝试:

setClass('Person', representation(name = 'character', age = 'numeric'))

m = matrix(nrow = 10, ncol = 10)

m[1, 1] = 42 #works

john = new('Person', name = 'John Smith', age = 42)

m[1, 1] = john #Error in m[1, 1] = john : number of items to replace is not a multiple of replacement length

我错过了什么或matrix只是错误的工具吗?如果是这样,我应该使用什么呢?

2 个答案:

答案 0 :(得分:3)

使用数据框,您可以将对象存储为列表(列被强制转换为列表变量):

setClass('Person', representation(name = 'character', age = 'numeric'))

m = as.data.frame(matrix(nrow = 10, ncol = 10))

m[1, 1] = 42 #works

john = new('Person', name = 'John Smith', age = 42)

m[1, 1] = list(list(john)) 

答案 1 :(得分:2)

它可能不是正确的工具。但是,如果每个单元格都有list(),则可以强制进入矩阵,但它通常并不理想。考虑:

m <- matrix(list(), nrow=10, ncol=10)
m[1, 1] = list(john) 
m[1, 1]
#[[1]]
#An object of class "Person"
#Slot "name":
#[1] "John Smith"
#
#Slot "age":
#[1] 42