R 分配给列表中的第 i 个索引,其名称在循环中可变调用?

标签 r list variables indexing assign

首先,这是一个很难解释的问题,特别是考虑到我对编码/R 及其术语很陌生,所以我感谢您的耐心和时间(命运引用!)。

我有一个数据框名称列表,在一个循环中我取出一个,然后进入第二个循环,在其中我想为该名称的当前(内循环)迭代分配()一个值。换句话说,在内部循环中,我想迭代地将值分配给数据框,其名称在外部循环中发生变化。

names <- c("alex","bec","kate")
states <- c("ACT","NSW","QLD","NT")

for (i in seq_along(names)){
    count <- 1
    curr.name = names[i]  #get current name
    assign(curr.name,list()) #preallocate list

    for (j in seq_along(states)) {
         x = matrix(rexp(200, rate=.1*j), ncol=10) #example data
         assign(curr.name[[count]], colMeans(x)) #here's my problem
        count <- count+1
    }
}

一旦达到 count==2,它告诉我下标超出范围,因为它试图将值分配给 curr.name(2),而 curr.name(2) 不存在。相反,我想将这些值分配给 curr.name 的第 j 个索引,即 alex[[2]],这样它看起来像

> alex
[[1]]
 [1] 1.952008 2.387436 1.745254 2.532774 3.174661 2.616323 1.713760 1.417643 3.328726
[10] 2.951489

[[2]]
 [1] 2.007752 2.856600 2.702416 1.370758 2.496893 2.383102 2.987076 2.838724 2.386669
[10] 2.125972

etc. 4 sets of means (one for each state) per name.

可能有更好的方法来组织我的数据,但是我正在处理其他人的代码,同时我只想让事情为他们工作,然后再考虑如何优化它。

提前谢谢您。

最佳答案

这是使用嵌套 lapply() 调用的一种方法

## set up a function to do the work on each list element
f <- function(x) colMeans(matrix(rexp(200, rate =.1 * x), ncol = 10))
## run the loops 
out <- lapply(setNames(, names), function(a) lapply(seq_along(states), f))
## view the result
str(out)
# List of 3
# $ alex:List of 4
# ..$ : num [1:10] 14.71 10.83 8.78 9.07 11.75 ...
# ..$ : num [1:10] 4.83 5.62 4.39 6.21 3.64 ...
# ..$ : num [1:10] 3.06 3.75 2.89 3.16 3.13 ...
# ..$ : num [1:10] 1.45 3.01 3.57 2.82 3.52 ...
# $ bec :List of 4
# ..$ : num [1:10] 7.78 10.2 11.63 5.52 16.48 ...
# ..$ : num [1:10] 5.75 4.82 4.14 4.51 3.21 ...
# ..$ : num [1:10] 2.5 4.44 3.26 2.72 4.62 ...
# ..$ : num [1:10] 2.19 2.5 1.9 2.88 2.51 ...
# $ kate:List of 4
# ..$ : num [1:10] 8.24 16.52 9.41 7.71 11.72 ...
# ..$ : num [1:10] 4.78 5.46 3.43 4.64 4.64 ...
# ..$ : num [1:10] 4.18 2.58 3.59 3.96 4.04 ...
# ..$ : num [1:10] 2.38 2.68 2.31 2.01 4.18 ...

关于R 分配给列表中的第 i 个索引,其名称在循环中可变调用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28758110/

相关文章:

r - 使用 rvest 提取页面内的多个表

r - 按唯一行分布数据集

css - Angularjs 列表元素边距问题将 ng-repeat 元素与静态元素相结合

java - 如何在java中生成CRL(证书撤销列表)

c - 在 Lua 中与嵌套函数一起使用 C 变量

JavaScript OR (||) 变量赋值说明

java - android fragment 控制主要 Activity

python - 在网站上运行搜索并返回结果的脚本

list - 使用 scanLeft 打包符号

r - 在 R 中查找每组的累积第二最大值