2016-11-29 4 views
0

Я немедленно извиняюсь за то, что многие уже задали его.

Мне нужна ваша помощь, ребята.

У меня есть data.frame, который имеет столбец «тело». Если тело> 0, мы вычисляем два столбца по тем же правилам, если «тело» < 0, а затем по разным правилам.

Чтобы довести концепцию после беспокойной части моего кода:

if(data$body > 0){ 
    data$shadow.up <- data$High - data$Close 
    data$shadow.down <- data$Open - data$Low 
}else{ 
    data$shadow.up <- data$High - data$Open 
    data$shadow.down <- data$Close - data$Low 
} 
+0

данные $ body - это вектор, поэтому он говорит, что «условие имеет длину> 1» и будет использовать только первый элемент вектора, который будет использоваться в выражении if. – Ansjovis86

ответ

0

Вы хотите попробовать следующее решение:

data$shadow.up <- ifelse(data$body > 0, data$High - data$Close, data$High - data$Open) data$shadow.down <- ifelse(data$body > 0, data$Open - data$Low, data$Close - data$Low)

В вашем решении условие if получает вектор логики, и он будет использовать только первое значение в этом векторе.

+0

Спасибо, Джим! Все работает. – Funrab

+0

Добро пожаловать @Funrab;) –

 Смежные вопросы

  • Нет связанных вопросов^_^