【问题标题】:Why am I getting different output from the Alteryx R tool为什么我从 Alteryx R 工具得到不同的输出
【发布时间】:2015-09-14 09:00:00
【问题描述】:

我使用 Alteryx R 工具签署了一个亚马逊 http 请求。为此,我需要摘要包中包含的 hmac 函数。

我正在使用包含密钥和日期戳的文本输入工具。

Key= "foo"
datastamp= "20120215"

这就是问题所在。当我运行以下脚本时:

the.data <- read.Alteryx("1", mode="data.frame")
write.Alteryx(base64encode(hmac(the.data$key,the.data$datestamp,algo="sha256",raw = TRUE)),1)

与运行以下命令相比,我得到了一个不正确的结果:

write.Alteryx(base64encode(hmac("foo","20120215",algo="sha256",raw = TRUE)),1)

不同之处在于,当我对键和对象的值进行硬编码时,我得到了正确的结果。但是,如果使用 R 数据框中的变量,我会得到不正确的输出。

数据框是否以某种方式改变了数据。有没有人在使用 Alteryx 中的 R 工具时遇到过这个问题。

感谢您的意见。

【问题讨论】:

    标签: r alteryx


    【解决方案1】:

    问题似乎是在创建数据框时,您的字符变量被转换为因子。使用data.frame 构造函数解决此问题的方法是

    the.data <- data.frame(Key="foo", datestamp="20120215", stringsAsFactors=FALSE)
    

    我没有使用过read.Alteryx,但我认为它具有类似的实现方式。

    或者,如果您的数据框已经创建,您可以将因子转换回字符:

    write.Alteryx(base64encode(hmac(
        as.character(the.data$Key),
        as.character(the.data$datestamp),
        algo="sha256",raw = TRUE)),1)
    

    【讨论】:

    • 感谢您在我的代码中发现拼写错误。 stringsAsFactors = FALSE 确实修复了 R 中的问题。
    • 我做了一些研究并决定尝试使用 Trim 功能。那成功了。你知道作为一个因素是否会导致空白?
    • @Mutuelinvestor trim 不是基本 R 函数,但我猜它会将其参数转换为字符。这是解决问题的方法,而不是是否有空格。
    猜你喜欢
    • 2021-01-08
    • 1970-01-01
    • 2021-11-15
    • 1970-01-01
    • 1970-01-01
    • 2019-08-10
    • 2021-06-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多