对于R中的循环跳过列

Posted

技术标签:

【中文标题】对于R中的循环跳过列【英文标题】:For loop skipping columns in 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 列中确实有文本的其他行没有编译该列。我可以在这里做什么?

【问题讨论】:

【参考方案1】:

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

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

【讨论】:

非常感谢!我总是让事情变得比必要的更难:')

以上是关于对于R中的循环跳过列的主要内容,如果未能解决你的问题,请参考以下文章

让 r 中的 for 循环跳过一些值

坚持Doctrine2时如何跳过列?

运行查询时是否可以跳过列?

如何使用R中的下一个函数跳过for循环中的迭代[重复]

使 rollApply() 跳过 n 步 - R

如何编写 R 脚本来检查直线;即,对于任何给定的行,一组列中的所有值是不是具有相同的值