首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >多维列表?列表列表?列表的数组?

多维列表?列表列表?列表的数组?
EN

Stack Overflow用户
提问于 2013-02-24 07:09:34
回答 4查看 23.5K关注 0票数 8

(我在这个问题中肯定使用了错误的术语,很抱歉-我只是不知道用R术语来描述这个问题的正确方式…)

我想创建一个异构对象的结构。尺寸不一定是矩形的。在其他语言中,我需要的可能只是“对象数组”,比如C。所谓“对象”,是指由不同成员组成的结构,即在R中只是一个列表-例如:

代码语言:javascript
复制
myObject <- list(title="Uninitialized title", xValues=rep(NA,50), yValues=rep(NA,50)) 

现在我想做100个这样的对象,并且能够通过这样的方式向他们的成员发表讲话

代码语言:javascript
复制
for (i in 1:100) {myObject[i]["xValues"]<-rnorm(50)}

代码语言:javascript
复制
for (i in 1:100) {myObject[i]$xValues<-rnorm(50)}

如果有任何关于这件事的描述的提示,我将不胜感激。

提前感谢!

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2013-02-24 17:21:13

我没有意识到您正在寻找创建具有相同结构的其他对象。您正在寻找replicate

代码语言:javascript
复制
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"
票数 6
EN

Stack Overflow用户

发布于 2013-02-24 07:16:34

你是在寻找这个神秘野兽的名字,还是想知道它是怎么做到的?:)我可能是错的,但我想你只会称它为列表列表。例如:

代码语言:javascript
复制
# 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 ]]
票数 13
EN

Stack Overflow用户

发布于 2013-02-24 08:46:13

这是我目前拥有的解决方案的示例,也许它对某些人有用:

代码语言:javascript
复制
    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]])  
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15046801

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档