You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

R语言:解决基于行索引生成Prediction列全为NA的问题

解决DataFrame生成Prediction列的问题

哦,我知道问题出在哪啦!你之前的代码犯了一个小错误——你用了nrow(newdata)来判断条件,但这个值是整个数据框的总行数(你的数据是40行),所以nrow(newdata) <=17永远是FALSE,难怪生成的Prediction列全是NA呢。我们需要判断的是每一行的行索引,而不是整个数据框的总行数。

下面给你几种正确的实现方法:

方法1:基础R的ifelse+行索引

直接针对每一行的位置进行判断,用seq_len(nrow(newdata))生成从1到总行数的序列,代表每行的索引:

newdata$Prediction <- ifelse(seq_len(nrow(newdata)) < 17, newdata$Value, NA)

如果你的行索引是默认的整数序列(从1开始),也可以直接用as.integer(rownames(newdata))来获取行索引:

newdata$Prediction <- ifelse(as.integer(rownames(newdata)) < 17, newdata$Value, NA)

方法2:tidyverse/dplyr风格(更简洁)

如果你习惯用tidyverse工具包,dplyr的row_number()函数可以直接获取每行的位置,代码更易读:

library(dplyr)
newdata <- newdata %>%
  mutate(Prediction = ifelse(row_number() < 17, Value, NA))

方法3:直接赋值(直观高效)

先把Prediction列全部设为NA,再给前16行(索引小于17)赋值为Value列对应的值,这种方法逻辑清晰,效率也不错:

newdata$Prediction <- NA
newdata$Prediction[1:16] <- newdata$Value[1:16]

验证示例

用你给出的前5行测试数据,运行上述任意一种方法,都会得到你期望的结果:

ID Year Value Prediction
1  2016 114235 114235
2  2016 114235 114235
3  2016 114235 114235
4  2016 114235 114235
5  2016 114235 114235

内容的提问来源于stack exchange,提问作者kimi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 09:24:01