2016-11-29 17 views
0

我很抱歉很多人已经问过它。

我需要你的帮助,伙计。

我有data.frame,它有一个'body'列。如果body> 0,那么我们按照相同的规则计算两列,如果'body'< 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;) –

相关问题