作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个 1000x1 的向量(1000 行和 1 列)。我想成对获取元素(第 1 行和第 2 行、第 3 行和第 4 行、第 5 行和第 6 行等)
这是我到目前为止所拥有的
for (j in 1: ncol(total_loci)){
for (i in 1: sample_size){
# a pair
genotype[i]<- paste(total_loci[i, j], total_loci[i+1,j], sep="")
}
}
i
应该从 1 开始,然后是 3、5、7、9 等。变量
total_loci
是类数据框。
最佳答案
您应该尽可能尝试使用矢量化解决方案。它们通常比循环更有内存效率和更快。
在这种情况下,您可以使用 seq
为每个其他元素生成一个索引向量。然后您可以使用该索引向量成对地对原始向量进行子集化。
# sample data
x <- replicate(5, sample(LETTERS, 1000, replace=TRUE), simplify=FALSE)
x <- as.data.frame(x, stringsAsFactors=FALSE)
names(x) <- paste("V",1:NCOL(x), sep="")
# function to concatenate every other observation as a pair
f <- function(x) {
s <- seq(2, length(x), 2)
paste(x[s-1], x[s], sep="")
}
# run algorithm for each column
y <- as.data.frame(lapply(x, f), stringsAsFactors=FALSE)
关于arrays - 如何成对循环遍历数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12866418/
我是一名优秀的程序员,十分优秀!