【问题标题】:For loop skipping columns in R对于R中的循环跳过列
【发布时间】:2022-01-19 22:33:10
【问题描述】:

我想在我的数据集 (dat) 的 20 列中连接文本,跳过所有 NA 值。

例如,如果第一行在第 1 列中有“cat”,在第 2 列中有“dog”,在第 3 列中有 NA,我想在新列中将其编译为“cat dog”(dat$results) .这是我所拥有的:

m <- ""

for(i in 1:20){
  if(!is.na(dat[,i])){
    m <- paste(m, dat[,i], sep = " ") 
  }
  else {
  next 
  }
}

dat$results <- m 

循环只运行到第 3 列(我的第一行是 NA)。第一行没有问题,但是在第 3 列中确实有文本的其他行没有编译该列。我可以在这里做什么?

【问题讨论】:

    标签: r loops


    【解决方案1】:

    也许只需一次连接所有列,然后删除 na 和双空格

    dat$result <- gsub('\\s\\s', ' ', gsub('NA', '', do.call(paste, d[,1:20])))
    

    【讨论】:

    • 非常感谢!我总是让事情变得比必要的更难:')
    猜你喜欢
    • 1970-01-01
    • 2014-12-08
    • 2019-05-17
    • 2015-01-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-12
    相关资源
    最近更新 更多