我有一个R数据框df
,列名为V1, V2, V3...V1000
。我需要通过选择每个第20列来对df
进行分组,即V1, V21, V41, V61
到列的结尾。
我认为这可以使用dplyr的select(df, num_range("V", val))
来完成,但是我很难理解如何通过1000列迭代val,步数为20。
有什么建议吗?
答案 0 :(得分:5)
将seq
功能与dplyr
&#39 {s} select
和num_range
一起使用,如下所示:
library(dplyr)
df <- as.data.frame(matrix(rnorm(3000), nrow = 3))
df %>% select(num_range("V", seq(1, 1000, by = 20)))
答案 1 :(得分:1)
FOO <- function(data, nSubsets, nskip)
{
outList <- vector("list", length = nSubsets)
totcol <- ncol(data)
for (i in seq_len(nSubsets))
{
colsToGrab<- seq(i, totcol, nSkip)
outList[[i]] <- data[,colsToGrab ]
}
return(outList)
}
答案 2 :(得分:1)
你可以尝试,
df[seq(1, ncol(df), 20)]