сравнить два вектора в г, в то время как и если структура - PullRequest
0 голосов
/ 24 мая 2018

Я пытался закодировать этот пример с помощью циклов while и if, но мне не удалось это сделать.С моим синтаксом всегда есть проблема.

, если x1> = x2 result = 1 else result = -1

x1 x2 result
 5  7   -1
 3  4   -1
 7  2    1

Если кому-то удастся получить правильный синтакс, я был бы очень благодарен

Ответы [ 2 ]

0 голосов
/ 13 июня 2018

Есть несколько способов получить ваши ответы, и ни один из них не нуждается в , в то время как цикл , поскольку векторизованные решения всегда должны вызывать интерес.Мой предпочтительный вариант будет:

result = (x1>=X2) -(x1<X2)

Но этот метод делает сравнение дважды и поэтому неэффективен.Вы можете использовать его математический эквивалент:

result = 2*(x1>=X2) - 1

Но если вы предпочитаете не использовать математику, другой чистый способ R это сделать:

result = rep(1,length(x1))
result[x1<X2] = -1
0 голосов
/ 24 мая 2018

Мне нравится использовать dplyr для решения подобных проблем.Мы можем решить эту проблему более эффективными способами, чем использование циклов

# make up some data
library(dplyr)
mydat <- data.frame(x = seq(1:10), y = rev(seq(10:1)))


#calculate result

new_data <- mutate(mydat, result = ifelse(x >= y, "1", "-1"))
...