如何将R数据帧导出到Power Query表

Nun*_*ira 7 r powerquery powerbi

我在Power Query中使用R脚本进行一些数据转换并返回一个缩放表。我的R代码是这样的:

# 'dataset' contém os dados de entrada neste script

library(dplyr)

df_normal <- log(dataset+1) %>%
select(c(2:4)) %>%
scale
df_normal <-cbind(dataset[,c(1)], df_normal)
output <- df_normal 
Run Code Online (Sandbox Code Playgroud)

这在R Studio中可以正常工作,并且按预期方式获得了df_normal数据框。

但是,在Power Query中,我得到了一个空表!

[R

如何将数据框导出到表?

Oli*_*ver 1

这未能返回确实看起来很奇怪。在网上快速浏览了一下,发现了这个 3 分钟的 YouTube 视频,它使用的方法与您正在使用的相同。进一步搜索来源,人们可能会遇到Microsoft 文档,其中给出了出现问题的可能原因。

\n
\n

在 Power BI Desktop 中准备和运行 R 脚本时,存在一些限制:

\n
    \n
  • 仅导入数据框,因此请确保要导入到 Power BI 的数据在数据框中表示

    \n
  • \n
  • 类型为 Complex 和 Vector 的列不会导入,而是替换为创建的表中的错误值

    \n
  • \n
\n
\n

这些似乎是最明显的原因。打赌您的数据集中没有复杂的列,我相信先验可能是原因。快速重新创建数据集会显示这些scale函数将数据集更改为matrix类对象。这是由 保存的cbind,因此输出是一流的matrix,而不是一流的data.frame

\n
>dataset <- as.data.frame(abs(matrix(rnorm(1000),ncol=4)))\n>class(dataset)\n[1]"data.frame"\n>library(dplyr)\n>df_normal <- log(dataset + 1) %>%\n>    select(c(2:4)) %>%\n>    scale \n>class(df_normal)\n[1] "matrix"\n>df_normal <- cbind(dataset[,1], df_normal)\n>output <- df_normal\n>class(output)\n[1] "matrix"\n
Run Code Online (Sandbox Code Playgroud)\n

一个简单的修复似乎是添加output <- as.data.frame(output),因为这与 powerBI 的文档一致。return也许最后需要一个类似的声明。在脚本末尾添加一行简单说明output应该可以解决此问题。

\n

编辑

\n

为了澄清起见,我相信以下编辑的脚本(您的)应该返回预期的数据

\n
# \'dataset\' cont\xc3\xa9m os dados de entrada neste script\n\nlibrary(dplyr)\n\ndf_normal <- log(dataset+1) %>%\nselect(c(2:4)) %>%\nscale\ndf_normal <-cbind(dataset[,c(1)], df_normal)\noutput <- as.data.frame(df_normal)\n#output  ##This line might be needed without the first comment \n
Run Code Online (Sandbox Code Playgroud)\n