【问题标题】:Loop a list to the N element将列表循环到 N 元素
【发布时间】:2021-04-08 18:34:00
【问题描述】:

假设我想将一个列表循环到所述列表的第 10 个元素。你能告诉我为什么代码不起作用吗?

loop <- function (list) {
  for (i in (list:list[[10]])) {
    df_i <- import(paste0(i))
  }
}
loop(list)

返回:

Error in ord_dirs:ord_dirs[[10]] : NA/NaN argument
In addition: Warning messages:
1: In ord_dirs:ord_dirs[[10]] :
  numerical expression has 18 elements: only the first used
2: In pasardir(ord_dirs) : NAs introduced by coercion
3: In pasardir(ord_dirs) : NAs introduced by coercion

【问题讨论】:

  • list:list[[10]] 应该是 for i in in 1:10) {list[[i]]}
  • 另外,df_i 名称中的 i 不会随着 i 的变化而变化,就像我有一个名为 data 的变量并且我设置了 a &lt;- "hello" 一样,它不会不要变成dhellothello。您可能应该将结果放在list 中。也许df_list &lt;- lapply(list[1:10], import)... 但很难说。 list 实际上是 list 类,还是文件路径的字符向量,还是其他什么?
  • 我建议阅读我在How do I make a list of data frames? 的答案以进行讨论和示例。
  • list 是字符向量是的。

标签: r loops for-loop


【解决方案1】:
loop <- function(list, x = 10) {

  df <- as.list(rep(NA, x))

  for (i in 1:x) {
    df[i] <- list[i]
  }

  df

}

list <- letters

loop(list)

【讨论】:

  • 这看起来像df &lt;- list[1:10] 的冗长方式...我认为这不是 OP 的目标。
  • 确实如此,但list[i] 可以替换为import 或实现其目标所需的任何功能。
猜你喜欢
  • 1970-01-01
  • 2023-04-02
  • 2017-01-18
  • 2016-08-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多