【发布时间】:2021-10-26 13:18:48
【问题描述】:
我对如何使用 R 中的列表分配键值对感到困惑。
我有一个包含多行多列的数据框。我有一个 ID 列和另一个名为 price 的列,
我想创建一个循环遍历我的 ID 列的 for 循环,并使用 ID 列的元素作为 key 和 price 列的元素作为 value
id <- seq(1,10,1)
price <- abs(rnorm(10))
x1 <- seq(100,1000,100)
data <- data.frame(x1, price, id)
for (i in data$id){
for (y in data$price){
value = y
}
key = i
alist = list()
alist[[key]] = value
}
这将返回一个长度为 1 的列表,其中包含条目 10
显然我的 R 编程概念是错误的,因此它不起作用。因此,如果有人可以澄清我做错了什么,那就太好了!数据很琐碎,我的实际数据基本相同,只是多了很多列,但我只想关注这两列。
附带说明,如果您有很多行,for 循环会变得非常慢,所以如果有人知道如何以更有效的方式执行此操作,请赐教。谢谢!
【问题讨论】:
-
您的代码中的问题是您在外循环的每次迭代中将
alist替换为一个空列表。您需要在两个循环之外初始化此列表。另外,alist <- split(price, id)会直接给你结果。 -
啊,谢谢你的澄清!我需要回去了解循环是如何工作的。我也会尝试 split() 函数
标签: r for-loop nested-loops