附加到数据框中特定值的 for 循环中的向量

Appending to a vector in a for-loop of a specific value from a data frame

我最近 运行 遇到了一个非常简单的任务。因此,我有一个名为 tissue.position 的数据框,其中包含一个 x 位置(第 5 列)和一个 y 位置(第 6 列)。我只想提取具有特定索引位置的特定元素,我需要提取的元素位置的索引存储在一个名为index_of_matched的向量中。我想提取具有这些特定索引的元素以及相应的 x 和 y 位置。我有以下代码:

x_position <- c()
y_position <- c()

for (i in length(index_of_matched)) {
  a = index_of_matched[i]
  x_position <- append(x_position, as.vector(tissue.position[a,5]))
  y_position <- append(y_position, as.vector(tissue.position[a,6]))
}

spatial.data <- data.frame(x_position,y_position)

spatial.data 是我存储专门选择的 x 和 y 坐标的数据框的名称。但是,当我 运行 代码时,我不知何故只能分别获得一个 x 和 y 坐标元素。当我检查要提取的索引数时,大约有 3700 个,这意味着有问题。输出似乎是坐标的总和。这是输出:

x-position  y-position
22117   19328       

我的代码哪里出错了?提前感谢您的帮助!

主要的错误是 i in length(index_of_matched) 只是一个数字,而不是遍历一个范围。更正后的版本为 i in seq_along(index_of_matched).

但是,像这样使用 for 循环是不符合习惯的,因为 R 有更多表达方式来完成同样的事情:

x_position <- tissue.position[index_of_matched, 5]
y_position <- tissue.position[index_of_matched, 6]

spatial.data <- data.frame(x_position,y_position)

或者,由于 tissue.position 已经是 data.frame,只需

spatial.data <- tissue.position[index_of_matched, c(5,6)]