r - Azure ML 和 r 脚本
问题描述
我有带有列的数据框
date open high low close adjclose volume
我想再添加一个名为“结果”的列(如果关闭>打开,则为 1,如果关闭 < 打开,则为 0)
我愿意
# Map 1-based optional input ports to variables
data <- maml.mapInputPort(1) # class: data.frame
# calculate pass/fail
data$result <- as.factor(sapply(data$close,function(res)
if (res - data$open >= 0) '1' else '0'))
# Select data.frame to be sent to the output Dataset port
maml.mapOutputPort("data");
但我的结果只有 1 个。问题出在哪里?
解决方案
只能返回单个 TRUE/FALSE ,if/else
并且不会对长度 > 1 进行向量化。它可能适合使用ifelse
(但这也不是必需的,并且与将逻辑向量直接强制转换为二进制 ( as.integer
) 相比效率较低。在OP的代码,“关闭”列元素被循环(sapply
)并从整个“开放”列中减去。目的可能是进行元素减法。在这种情况下,-
列之间更清洁和高效(因为这些操作是矢量化的)
data$result <- with(data, factor(as.integer((close - open) >= 0)))
在上面,我们得到了列之间的差异('close','open'),检查它是否大于或等于0(返回逻辑向量),将其转换为二进制(as.integer
- TRUE -> 1,FALSE - > 0),然后将其更改为factor
类型(如果需要)
推荐阅读
- amazon-web-services - 签名者 url AWS Kinesis 视频流 webrtc 使用 java
- javascript - 我很困惑,我想知道这两个代码的区别?
- javascript - 如何确定用户是否选择了视频或图像?
- r - 使用带有 MIRT 包的 R 中的项目响应理论(IRT,3PL)计算比例分数
- algorithm - 查找整数是否存在于范围列表中
- javascript - 如何解析上传的 csv 文件?
- tensorflow - 如何在 tf2 中启用 grappler 的自动并行?
- sql-server - 获取 ms sql 中每一行的一个月前数据
- javascript - 使用大于“Number.MAX_SAFE_INTEGER”(9007199254740992)的数字模拟输入 type="number"?
- ios - 尝试在右上角格式化图像 - SwiftUI