Как преобразовать вывод цикла в вектор? - PullRequest
1 голос
/ 22 мая 2019

Я извлекаю определенные значения из набора данных Z (позиции указаны в наборе данных A), используя функцию цикла.

#Exemplary datasets
Z <- data.frame(Depth=c(0.02,0.04,0.06,0.08,0.10,0.12,0.14,0.16,0.18,0.2), 
Value=c(10,12,5,6,7,4,3,2,11,13))
A <- data.frame(Depth=c(0.067, 0.155))

for (n in c(1:nrow(A)))
+ {find_values <- Z$Value[Z$Depth>=A$Depth[n]][1]
+ print(find_values)}

#Result
[1] 6
[1] 2

Результат состоит из значений в двух отдельных векторах. Как я могу легко объединить их в один вектор следующим образом?

[1] 6, 2

Заранее спасибо!

Ответы [ 2 ]

1 голос
/ 22 мая 2019

Чтобы ваш код работал как есть, вы можете сохранить их, используя индекс в for loop

for (n in seq_len(nrow(A))) {
   find_values[n] <- Z$Value[Z$Depth>=A$Depth[n]][1]
}
find_values
#[1] 6 2

Однако вы можете упростить это с помощью sapply, выполнив

sapply(A$Depth, function(x) Z$Value[which.max(Z$Depth >= x)])
#[1] 6 2
0 голосов
/ 22 мая 2019

Мы можем использовать векторизованный подход

Z$Value[findInterval(A$Depth, Z$Depth) + 1]
#[1] 6 2
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...