【问题标题】:Store multiple vectors in a list using for-loop使用 for 循环将多个向量存储在列表中
【发布时间】:2017-09-08 07:51:50
【问题描述】:

我是 R 新手。我有多个向量,我想将它们存储在 for 循环中的列表中。我尝试使用 []、[[]] 和 (),但我收到一条错误消息,指出找不到 dateRange。你能帮忙修复我的代码吗?

dateRange1 <- c('2015-01','2015-12')
dateRange2 <- c('2016-01','2016-12')
ind <- list()

for (a in 1:2) {
  ind[a] <- dateRange(a)
 }

ind

谢谢,祝你有美好的一天!

【问题讨论】:

  • 不是很清楚,需要dateRange = list(c('2015-01','2015-12'), c('2016-01','2016-12'))这样的smth吗?
  • 如果我不清楚,我很抱歉。但是我想将所有 dateRange 存储到名为“ind”的列表中,因此当我访问 ind[[1]] 时,它将显示 dateRange1 和 ind[[2]] 的值,它将显示 dateRange2 中的值。希望这是有道理的。
  • 如何获得多个向量?在此过程中,您可以生成您的列表。
  • ind = list(c('2015-01','2015-12'), c('2016-01','2016-12'))。现在ind[[1]] 为您提供了您的第一个范围。如果您需要附加到ind 列表,那么只需执行ind &lt;- append(ind, list(c('2017-05','2016-12')))
  • @AlexNevsky 我想 OP 有更多这样的向量。

标签: r list for-loop vector


【解决方案1】:

如果你真的想要,请使用 get()mget()

ind <- mget(paste0("dateRange", 1:2))

如果你以前在某个地方使用过assign(),通常你会得到这么多向量。这就是您必须重组数据生成过程的地方。 (通常使用assign() 不是一个好主意。“如果问题是:使用assign()?答案几乎是:”)。
Why is using assign bad?

【讨论】:

  • 感谢您对此进行调查。如果我在 SHiny R/ 的 dateRangeInput 中有几个 input$daterange,这个 mget 功能也适用。
【解决方案2】:

您没有名为dateRange 的对象。要执行您需要使用的操作 evalparse。设置a &lt;- 1 然后单独运行各个部分以查看它们的作用。检查paste0("dateRange", a) 做了什么,然后是parse(text = paste0("dateRange", a)),然后是eval(parse(text = paste0("dateRange", a)))

dateRange1 <- c('2015-01','2015-12')
dateRange2 <- c('2016-01','2016-12')
ind <- list()

for (a in 1:2) {
  ind[[a]] <- eval(parse(text = paste0("dateRange", a)))
}

ind

【讨论】:

  • 谢谢杰克。这就是我要找的。感谢您的时间。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-04-04
  • 1970-01-01
  • 2017-08-24
  • 2021-06-16
  • 2021-11-04
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多