我正在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
这在R Studio中可以正常工作,并且按预期方式获得了df_normal数据框。
但是,在Power Query中,我得到了一个空表!
如何将数据框导出到表中?
答案 0 :(得分:2)
这似乎无法恢复,这似乎很奇怪。在线快速浏览了一下this 3 minute youtube video,它使用了与您使用的相同的方法。进一步搜索一个源,可能会遇到Microsoft Documentation,这提供了可能存在问题的可能原因。
在Power BI Desktop中准备和运行R脚本时,存在一些限制:
仅导入数据框,因此请确保要导入到Power BI的数据在数据框中表示
类型为“复杂”和“向量”的列不会导入,并在创建的表中替换为错误值
这些似乎是最明显的原因。相信您的数据集中没有复杂的列,我相信先验可能是原因。快速浏览数据集表明scale
函数将您的数据集更改为matrix
类对象。这由cbind
保留,因此输出属于matrix
类,而不是data.frame
类。
>dataset <- as.data.frame(abs(matrix(rnorm(1000),ncol=4)))
>class(dataset)
[1]"data.frame"
>library(dplyr)
>df_normal <- log(dataset + 1) %>%
> select(c(2:4)) %>%
> scale
>class(df_normal)
[1] "matrix"
>df_normal <- cbind(dataset[,1], df_normal)
>output <- df_normal
>class(output)
[1] "matrix"
然后一个简单的修补程序似乎正在添加output <- as.data.frame(output)
,因为这与powerBI的文档一致。也许最后需要像return
这样的语句。在脚本末尾添加一行仅说明output
即可解决此问题。
为澄清起见,我相信以下(您的)修改后的脚本应返回预期的数据
# '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 <- as.data.frame(df_normal)
#output ##This line might be needed without the first comment