附加到数据框中特定值的 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)]
我最近 运行 遇到了一个非常简单的任务。因此,我有一个名为 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)]