作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
假设我们想将对作为元素存储在列表中,例如,
> x <- list()
> x[[1]] <- list(1,2)
> x[[2]] <- list(3,4)
> x
[[1]]
[[1]][[1]]
[1] 1
[[1]][[2]]
[1] 2
[[2]]
[[2]][[1]]
[1] 3
[[2]][[2]]
[1] 4
> c(list(list(1,2)),list(3,4))
[[1]]
[[1]][[1]]
[1] 1
[[1]][[2]]
[1] 2
[[2]]
[1] 3
[[3]]
[1] 4
c()
的第二个参数从而使用连接来产生
x
?
c
也许更自然。因此,使用显式索引,循环可能如下所示
index <- 1
l <- list()
for (i in 1:10) {
for (j in (i+1):10) {
if ( (i+j)%%2 == 0 ) {
l[[index]] <- list(i,j)
index <- index + 1
}
}
}
c
失败看起来像这样
l <- list()
for (i in 1:10) {
for (j in (i+1):10) {
if ( (i+j)%%2 == 0 )
l <- c(l,list(i,j))
}
}
l <- list()
for (i in 1:10) {
for (j in (i+1):10) {
if ( (i+j)%%2 == 0 )
l <- c(l,list(list(i,j)))
}
}
最佳答案
我想简单的答案是“不,你需要额外的 list() 包装器”。
...但总的来说,使用索引将值添加到预分配列表比使用 c()
更好(更快/更少内存)
x <- NULL
for(i in 1:2) x <- c(x, list(list(i,i+1)))
x
x <- vector('list', 2)
for(i in seq_along(x)) x[[i]] <- list(i,i+1)
x
lapply
可以使用,这通常更有效:
lapply(1:2, function(i) list(i, i+1))
关于list - R:通过 cbind 的列表列表而无需展平,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8557093/
我是一名优秀的程序员,十分优秀!