Мой код ниже создает объект listData, используя неэффективный двойной цикл for:
data = data.frame(ID = paste0("ID", 1:10), A.1 = rnorm(10,3), A.2 = rnorm(10,3), B.1 = rnorm(10,5), B.2 = rnorm(10,5), C.1 = rnorm(10,7), C.2 = rnorm(10,7), D.1 = rnorm(10,9), D.2 = rnorm(10,9))
colGroups = c("ID", "A", "A", "B", "B", "C", "C", "D", "D")
colNames = unique(colGroups)[-1]
k=1
listData = list()
seqVec <- seq(1, length(colNames)-1)
for (i in seq_along(seqVec)){
for (j in (i+1):length(colNames)){
group1 = colNames[i]
group2 = colNames[j]
datSel <- cbind(ID=data$ID, data[,which(colGroups %in%
c(group1, group2))])
listData[[k]] <- datSel
k = k +1
}
}
Можно ли переписать этот код в формате lapply, одновременно используя seq_along () вместо seq (1,длина (var)) формат?