在 for 循环中包含 NA 值

问题描述 投票:0回答:1

我正在将值提取到新的数据框中。这些值来自包含列表的列的对象,我需要从每行的特定列/列表中提取特定值。我创建了一个 for 循环,它迭代每一行,提取各种值,并将它们输入到数据帧中,但是有些值不适用。 for 循环输入这些然后出错(Error in x[[jj]][iseq] <- vjj : replacement has length zero) without iterating through the rest of the dataframe. I need to include the NAs in the dataframe so those entries cannot just be skipped.

我从中提取的对象非常复杂,大约有 7 列,其中四列包含列表中的嵌套值。我将数据放入 (df) 的数据框只是一个空数据框,与我要提取的值的尺寸(例如 13 列)相匹配。

for 循环看起来像这样,除了要提取 13 个以上的值:

for(i in 1:nrow(object)){
   df[i, 1] <- object[[3]][[i]]
   df[i, 2] <- object[[6]][[i]]$mean_r
   df[i, 3] <- object[[6]][[i]]$true_score_sd_rho
   df[i, 4] <- object[[9]][[i]]$true_score$CI_LL_95
   df[i, 5] <- object[[9]][[i]]$true_score_Q[[3]]
}

我尝试以某种形式将 !is.na() 包含在循环中,但除了对所有 13 个以上条目执行此操作之外,它似乎不起作用。我希望有一些东西可以在命中时输入 NA 值,然后继续进行下一行。

我也没有接受这个版本的代码,如果有更时尚/更快/更好的方法来做到这一点,我很乐意了解它!

r for-loop na
1个回答
0
投票

请制作一个可重现的示例,因为我无法从您编写的内容和代码中看出您的问题源于何处。获取 NA 并将其插入 data.frame 似乎不是问题,因为这没有争议/困难。


df <- data.frame()
df[1,1] <- 1
df[1,2] <- NA
df[1,3] <- 3
df

结果->

  V1 V2 V3
1  1 NA  3
© www.soinside.com 2019 - 2024. All rights reserved.