我正在将值提取到新的数据框中。这些值来自包含列表的列的对象,我需要从每行的特定列/列表中提取特定值。我创建了一个 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 值,然后继续进行下一行。
我也没有接受这个版本的代码,如果有更时尚/更快/更好的方法来做到这一点,我很乐意了解它!
请制作一个可重现的示例,因为我无法从您编写的内容和代码中看出您的问题源于何处。获取 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