我试图用自定义类的对象填充矩阵。但似乎这不起作用。这是我的尝试:
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
只是错误的工具吗?如果是这样,我应该使用什么呢?
答案 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