r - 对于 r 中的循环问题:if (length[i] == 1) { 中的错误:需要 TRUE/FALSE 的缺失值
问题描述
ann <- 1:2500
len <- sample(1:3,1000,replace=TRUE)
df <- data.frame(col1= c(1:2500),col2= c(1:2500))
for (i in 1:length(ann)) {
if (length[i]==1) {
df$col1[i] <- len[i] }
else if (length[i]==2) {
df$col1[i] <- len[i]
df$col1[i+1] <- len[i] }
else if (length[i]==3) {
df$col1[i] <- len[i]
df$col1[i+1] <- len[i]
df$col1[i+2] <- len[i] }
}
试图使 2 的每个实例在下一行以数字 2 重复。此外,如果有 3,我希望这之后的两行具有数字 3。谢谢!我需要练习 for 循环。
Error in if (length[i] == 1) { : missing value where TRUE/FALSE needed
更新: for 循环将用以下数字替换每个重复的行,我需要知道如何在每个 2 实例之后生成 i+1,在每个 3 实例之后生成 i+2。
解决方案
在这里,我们可以遍历 的所有元素len
,并为每个执行一个内部循环,该循环获取该元素len
并将其输入到 的那么多行中df$col1
。
df_row <- 1
for (i in 1:length(len)) {
for (j in 1:len[i]) {
df[df_row, 1] = len[i]
df_row <- df_row + 1
}
}
推荐阅读
- android - 如何确定内容的实际 MIME 类型?
- php - 基于 Laravel (ORM) 中的表关系获取带有额外标志字段的数据
- php - 寻找
(paragraph) 带有特定类的标签并使用 PHP Simple HTML DOM Parser 提取其内容
- laravel - 指定自定义表名并在模型上设置条件 | 拉拉维尔
- anaconda - 无法在 anaconda 中激活 pyfinance
- node.js - Mongodb 更新不适用于嵌套对象数组
- mod-rewrite - Mod_rewrite 网址不起作用
- angularjs - 当我运行 Angular 项目时:出现 Websocket 错误
- python - 用烧瓶响应opencv(numpy)图像
- bash - 将 Bash 中导出的环境变量设置为默认值,如果未设置,请提及一次