(我在这个问题中肯定使用了错误的术语,很抱歉-我只是不知道用R术语来描述这个问题的正确方式…)
我想创建一个异构对象的结构。尺寸不一定是矩形的。在其他语言中,我需要的可能只是“对象数组”,比如C。所谓“对象”,是指由不同成员组成的结构,即在R中只是一个列表-例如:
myObject <- list(title="Uninitialized title", xValues=rep(NA,50), yValues=rep(NA,50)) 现在我想做100个这样的对象,并且能够通过这样的方式向他们的成员发表讲话
for (i in 1:100) {myObject[i]["xValues"]<-rnorm(50)}或
for (i in 1:100) {myObject[i]$xValues<-rnorm(50)}如果有任何关于这件事的描述的提示,我将不胜感激。
提前感谢!
发布于 2013-02-24 17:21:13
我没有意识到您正在寻找创建具有相同结构的其他对象。您正在寻找replicate。
my_fun <- function() {
list(x=rnorm(1), y=rnorm(1), z="bla")
}
replicate(2, my_fun(), simplify=FALSE)
# [[1]]
# [[1]]$x
# [1] 0.3561663
#
# [[1]]$y
# [1] 0.4795171
#
# [[1]]$z
# [1] "bla"
#
#
# [[2]]
# [[2]]$x
# [1] 0.3385942
#
# [[2]]$y
# [1] -2.465932
#
# [[2]]$z
# [1] "bla"发布于 2013-02-24 07:16:34
你是在寻找这个神秘野兽的名字,还是想知道它是怎么做到的?:)我可能是错的,但我想你只会称它为列表列表。例如:
# create one list object
x <- list( a = 1:3 , b = c( T , F ) , d = mtcars )
# create a second list object
y <- list( a = c( 'hi', 'hello' ) , b = c( T , F ) , d = matrix( 1:4 , 2 , 2 ) )
# store both in a third object
z <- list( x , y )
# access x
z[[ 1 ]]
# access y
z[[ 2 ]]
# access x's 2nd object
z[[ 1 ]][[ 2 ]]发布于 2013-02-24 08:46:13
这是我目前拥有的解决方案的示例,也许它对某些人有用:
NUM <- 1000 # NUM is how many objects I want to have
xVal <- vector(NUM, mode="list")
yVal <- vector(NUM, mode="list")
title <- vector(NUM, mode="list")
for (i in 1:NUM) {
xVal[i]<-list(rnorm(50))
yVal[i]<-list(rnorm(50))
title[i]<-list(paste0("This is title for instance #", i))
}
myObject <- list(xValues=xVal, yValues=yVal, titles=title)
# now I can address any member, as needed:
print(myObject$titles[[3]])
print(myObject$xValues[[4]]) https://stackoverflow.com/questions/15046801
复制相似问题