我的标题问题与SOF中的很多问题非常相似,尽管我的问题非常不同:
我有一个列表MY_LIST
。
MY_LIST=list("a","b","c")
我有一个直方图类对象HIST_OBJECT
。
HIST_OBJECT=hist(rnorm(n=500, m=1, sd=1))
class(HIST_OBJECT)
[1] "histogram"
我想将HIST_OBJECT
加载到列表MY_LIST
的第一个插槽中。所以我执行:
MY_LIST[[1]][2]=list(HIST_OBJECT)
到目前为止一直很好,但问题是我HIST_OBJECT
的班级发生了变化。这是一个直方图类,我可以绘制(plot(HIST_OBJECT)
有效!)但现在它是一个列表类,我不能再绘制(plot(MY_LIST[[1]][2]
)不工作了)
class(MY_LIST[[1]][2])
[1] "list"
是否有人知道怎样做以使MY_LIST[[1]][2]
对象成为"直方图"类对象?非常感谢提前!!
答案 0 :(得分:1)
你很亲密:
class(MY_LIST[[1]][[2]])
想象一个像列车一样的列表:单个[
获取您想要的所有内容,双[[
只获取该列车的内容。另请注意为什么MY_LIST[[1]][2]=HIST_OBJECT
不起作用,但MY_LIST[[1]][[2]]=HIST_OBJECT
会起作用。
在这种情况下,[2]
使您获得与其容器相同的类 - 一个包含第二个元素的列表,您的hist。 [[2]]
将获取第二个容器中的元素,在本例中为hist。
另一个例子:
df <- data.frame(x=c(1,2,3), y=c(4,5,6))
class(df[1])
class(df[[1]])