【问题标题】:How to return a vector when connecting R with Tableau?将R与Tableau连接时如何返回向量?
【发布时间】:2015-07-28 01:31:20
【问题描述】:

我正在尝试通过 Tableau 计算字段返回一个向量。根据下面的链接,Tableau 可以通过计算字段使用与 R 的连接来接收单个值或向量。

http://community.tableau.com/docs/DOC-5313

见:

"...如果 R 代码返回值矩阵,Tableau 将不知道该怎么做,我们必须返回单个值或向量,..."

这是我在计算字段中的内容,其中参数 1 和参数 2 只是任意值(仅用于演示目的):

SCRIPT_REAL ('testvector <- c(.arg1, .arg2); testvector',min([Parameter 1]), min([Parameter 2]))

我应该返回一个向量,但我收到以下错误消息:

## Error: Unexpected number of results returned by SCRIPT function.  Function expected 1 values; 2 values were returned. 

【问题讨论】:

    标签: r tableau-api calculated-field rserve


    【解决方案1】:

    你实际上并没有返回一个值;只需在 Rserve 环境中分配 3 个向量。赋值后需要返回testvector

    SCRIPT_REAL('column1 <- c(.arg1, .arg2); 
                column2 <- c(.arg3, .arg4); 
                testvector <- c(column1,column2);
                testvector', 
                min([Parameter 1]), min([Parameter 2]),min([Parameter 3]), min([Parameter 4]))
    

    【讨论】:

    • 我很困惑。为什么要创建 3 个向量?似乎应该只有一个-testvector &lt;- c(column1, column2)。另外,我在脚本中添加了一行testvector,但它并没有解决问题。我仍然收到相同的错误消息。
    • 我认为您编辑了我原始帖子的标题-脚本函数返回的结果数量意外
    • 您需要明确指定要返回给 Tableau 的向量。如果不指定 ... ;testvectorRserve 不知道要返回 3 个向量中的哪一个(即:column1column2testvector)。
    • 在我的第一条评论中,我提到“另外,我在脚本中添加了单行 testvector,但它没有解决问题。我仍然收到相同的错误消息”。我认为这与我试图表达的观点有关。例如,此站点:link 表示:R 脚本结果必须是一个标量或长度为 1 的向量,可复制到所有行,或者长度等于 Tableau 中的行数的向量结果表。
    • 在货架上没有其他药片的情况下试一试
    【解决方案2】:

    如果您使用此计算字段的表有 1 行且 Parameter1 值为 9 且 Parameter2 值为 5,则使用您发布的代码示例,您正在创建一个看起来像 (9,5) 的向量2 行。

    所以表 1 行但计算字段返回 2 行。因此错误消息

    “函数需要 1 个值;返回 2 个值。”

    如果您想取回一个向量,则需要传递一个向量。您可以查看R integration introductory blog post 上的 k-means 聚类示例,该示例传递了构成 Iris 数据集的多个向量,并通过集群分配返回了一个向量。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-09-15
      相关资源
      最近更新 更多