gpt4 book ai didi

arrays - 如何成对循环遍历数组?

转载 作者:行者123 更新时间:2023-12-01 10:03:48 25 4
gpt4 key购买 nike

我有一个 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="")
}
}

因此,基因型应该是包含基因型的 500x1 向量(500 行和 1 列)。假设我的 for 循环是正确的。我认为我需要跳过所有其他索引 - 所以我的 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com