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

标签 arrays r matrix dataframe

我有一个 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/

相关文章:

对象数组中的javascript排序元素

c++ - 在函数调用结束后保留​​数组的内容。 (C++)

python - 用 numpy tensordot 进行张量乘法

python - 展开 numpy 矩阵

c++ - 在滚动窗口上应用矩阵乘法的最聪明方法

c - 如何在给定数组中查找重复项并在c中对它们求和

c - 为什么我无法打印存储在创建的数组中的值?

r - 在包 C50 中找不到数据集 'churn'

R 执行函数就像在交互式 session 中输入一样

r - 计算R中连续值的按组比率