【问题标题】:How to replace certain rows in a data frame without using a for loop如何在不使用 for 循环的情况下替换数据框中的某些行
【发布时间】:2020-10-21 04:36:25
【问题描述】:

我想用空白替换我的变量组的某些行。如何在不使用 for 循环的情况下做到这一点?这是我的代码。目标是将“组”编码为:“A”、空白、空白、空白、空白、“A”、空白、空白...

group <- rep("A", 20)
var   <- rep("B", 20)

out <- data.frame(group, var)

out$row_num <- seq(1:nrow(out))
    
for (i in 1:nrow(out)) {
   if (out$row_num[i] %% 5 != 1) {
      out$group[i] <- " "
    } 
}

【问题讨论】:

  • 是的,正确的。我已经修好了。谢谢!

标签: r for-loop apply


【解决方案1】:

这些操作是矢量化的。因此,可以在没有for 循环的情况下完成替换。另外,从R 4.0 开始,构造data.frame 时的默认选项是stringsAsFactors = FALSE

out$group[out$row_num %% 5 != 1] <- ' '

基于更新,如果打算复制

rep(c("A", "", "", "", ""), length.out = 20)
#[1] "A" ""  ""  ""  ""  "A" ""  ""  ""  ""  "A" ""  ""  ""  ""  "A" ""  ""  ""  "" 

【讨论】:

  • 是的,这就是我打算复制的内容。
猜你喜欢
  • 2020-08-30
  • 2023-03-19
  • 2019-07-02
  • 2021-11-01
  • 2018-06-04
  • 1970-01-01
  • 2021-07-08
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多