r - 在循环中创建许多变量 (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
关于从这里去哪里有什么建议吗?
解决方案
我认为您正在尝试创建许多名为p1
,等的变量p2
,p3
每个变量都写有相应的段落。在这种情况下,以下应该有效:
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$p1
,p$p2
等等。
如果段落在向量而不是列表中,您可以这样做
p <- setNames(as.list(paragraphs), paste0("p", seq_along(paragraphs)))
得到相同的结果。
推荐阅读
- android - Android Firebase 注册后自动登录
- java - FragmentTrasaction 问题:IllegalArgumentException:找不到 id 的视图
- floating-point - 浮点数乘法:a * 1.0 == a 保证?
- javascript - 无法展平嵌套对象
- python - 尝试在 python 中安装 matplotlib
- javascript - 如果值超过最大值,则验证内部输入
- javascript - 您建议在 useEffect 挂钩中取消订阅的模式是什么?
- python - 寻找一种更快的方法在 pandas df 上执行 SimpleImputer
- python - 使用 Pyarrow 读取 Spark 编写的 parquet 文件显着增加内存
- laravel - 更新 Laravel 中两个表的字段