首页 > 解决方案 > 在循环中创建许多变量 (R)

问题描述

我想浏览“段落”的列表,其中包含许多段落,并将每个单独的段落保存为新变量,并尝试编写此代码块并收到以下错误:

for (value in paragraphs) {
     nam <- paste("p", value, sep = ".")
     value <- assign(nam, 1:value)
}

Error in 1:value : NA/NaN argument
In addition: Warning message:
In assign(nam, 1:value) : NAs introduced by coercion

关于从这里去哪里有什么建议吗?

标签: rfor-loop

解决方案


我认为您正在尝试创建许多名为p1,等的变量p2p3每个变量都写有相应的段落。在这种情况下,以下应该有效:

for (value in seq_along(paragraphs)) {
     nam <- paste("p", value, sep = ".")
     value <- assign(nam, paragraphs[value])
}

但是,将一堆变量写入全局工作区并不是一个好主意,如果段落都在一个命名列表中会更好。你说它们已经在一个列表中,但不清楚你是指一个实际的 R 列表还是一个向量。如果它们已经在列表中,您可以这样做:

p <- setNames(paragraphs, paste0("p", seq_along(paragraphs)))

这将允许您访问每个段落p$p1p$p2等等。

如果段落在向量而不是列表中,您可以这样做

p <- setNames(as.list(paragraphs), paste0("p", seq_along(paragraphs)))

得到相同的结果。


推荐阅读