R中如何自动填充dataframe的sig列指定范围空单元格为星号
方案1:向量化操作(更简洁高效,推荐)
无需编写循环,直接通过索引定位批量替换即可:
# 定位sig列最后一个星号的行号 last_star_row <- max(which(df$sig == "*")) # 把该行及以上的空sig替换为* df$sig[1:last_star_row][df$sig[1:last_star_row] == ""] <- "*"
运行后输出的sig列结果如下,完全符合需求:
> df$sig [1] "*" "*" "*" "*" "*" "*" "*" "*" "" "" ""
方案2:按你提到的for循环思路实现
如果需要用循环逻辑完成,可以参考如下代码:
# 第一步:从下往上遍历找到最靠下的星号行号 last_star_row <- 0 for (i in nrow(df):1) { if (df$sig[i] == "*") { last_star_row <- i break } } # 第二步:遍历首行到last_star_row,填充所有空单元格 for (i in 1:last_star_row) { if (df$sig[i] == "") { df$sig[i] <- "*" } }
两种方案运行结果完全一致。
内容的提问来源于stack exchange,提问作者beanboy
相关产品推荐
相关产品推荐

