R滤镜功能不会过滤掉结果

时间:2018-06-08 17:26:22

标签: r azure

我试图找到Azure ML中顶部和底部深度值之间存在值的所有行。我使用的是dplyr的过滤功能,代码不会抛出错误。但是,当我查看结果时,它没有过滤任何东西。有人能看出我出错的地方吗?



library(dplyr)

Upper_Depth<-dataset1$Upper_Depth
Lower_Depth<-dataset1$Lower_Depth
TopMD<-dataset1$TopMD
BaseMD<-dataset1$BaseMD

  # Filter where the Perf is within the Upper and Lower Depth intervals:
  #select(Upper_Depth, Lower_Depth, TopMD, BaseMD) %>%
  filter(dataset1, Upper_Depth > TopMD & Lower_Depth < BaseMD);
  
  # Subset the data where the perfs are in the L_WSEC_A:
  #subset(dataset1, Upper_Depth > TopMD & Lower_Depth < BaseMD)
  
  full_data <- dataset1

# Select data.frame to be sent to the output Dataset port
maml.mapOutputPort("full_data")
&#13;
&#13;
&#13;

我尝试了子集功能但获得了相同的结果。我很抱歉,因为我对r和Azure ML Studio都很陌生。

1 个答案:

答案 0 :(得分:0)

欢迎来到R!

您的代码未按预期工作的原因是因为脚本中的前四行是分配向量。如果您使用base R子集(在控制台尝试?'[')并在列中执行逻辑测试作为向量,这将正常工作。

dplyr的工作方式有些不同。这个比喻更接近于SQL,对待每个&#34;列&#34;在数据集中作为SQL字段。因此,您可以直接使用变量,而无需将它们子集化为向量。

尝试:

   dataset1 %>% filter(Upper_Depth > TopMD & Lower_Depth < BaseMD)

它应该为您提供dataset,已过滤,以便每个条件的评估结果为TRUE

如果你想保存结果,只需左键 - 像这样分配:

   full_data <- dataset1 %>% filter(Upper_Depth > TopMD & Lower_Depth < BaseMD)

我希望这有帮助!