【问题标题】:How to print every 6th row in data set in R using loops?如何使用循环在 R 中的数据集中每 6 行打印一次?
【发布时间】:2020-09-07 05:14:15
【问题描述】:

我有一个包含 5 列和 60 行的数据集。我正在尝试使用 for() 或 while() 循环打印整个数据集的每 6 行。我不想使用任何其他方法。

到目前为止我有这个代码:

for (i in seq(from = 6, to = 60, by = 6)) { 
  print(i)
}

这会打印第 1 列的每 6 行,但不会打印其余的数据集或列名。有人知道怎么做吗?

【问题讨论】:

  • i 是行号,要获取数据集的其余部分,您可以尝试mydata[i,]

标签: r


【解决方案1】:

我们只打印i,这里我们需要使用i 作为索引。假设'df1'是数据集

for (i in seq(from = 6, to = nrow(df1), by = 6)) { 
   print(df1[i,])
  }

这个print 仅在控制台上,假设我们想将这些子集存储为单独的数据集

newdat <- df1[0,]
for (i in seq(from = 6, to = nrow(df1), by = 6)) { 
      newdat <- rbind(newdat, df1[i,])
  }

newdat

使用内置数据集“mtcars”

newdat <- mtcars[0,]
for (i in seq(from = 6, to = nrow(mtcars), by = 6)) { 
      newdat <- rbind(newdat, mtcars[i,])
  }

如果需要是函数

foo1 <- function(data, rn) {
    newdat <- data[0,]
    for (i in seq(from = rn, to = nrow(data), by = rn)) { 
      newdat <- rbind(newdat, data[i, rn])
      }
     return(newdat)
   }
  

请注意,子集索引是矢量化的。所以,我们这里不需要任何循环

df1[seq(from = 6, to = nrow(df1), by = 6),]

或者使用逻辑回收索引

df1[rep(c(FALSE, TRUE), c(5, 1)),]

【讨论】:

  • 完美!谢谢!我如何将其转换为函数?
  • @AppleSauceBoss 你想要for 循环是一个函数还是向量化的循环
  • @AppleSauceBoss 更新了功能。希望对你有帮助
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多