为什么app.powerbi.com环境下R语言tidyr库无法正常加载?
问题原因
PowerBI Desktop调用的是你本地设备上的R运行环境,只要你本地安装了tidyr包就能正常运行。但app.powerbi.com的R运行环境有固定的预装包范围,tidyr不在默认预装列表内,因此发布在线上后无法识别相关函数和包。
解决方案
方案1:上传自定义R包(需满足许可要求)
- 只有PowerBI Premium、PPU(Per User)、Embedded许可支持上传自定义R包,免费版、普通Pro版无该权限,需直接看替代方案。
- 符合许可要求的前提下,下载和你本地R版本匹配的tidyr及其所有依赖包的Windows二进制安装包,在对应数据集的「设置」-「R脚本运行」板块上传即可正常调用。
方案2:无需额外包的原生替代实现
用R基础包自带的reshape()函数实现长表转宽表,不需要依赖任何第三方包,示例代码如下:
# 替换参数中的列名为你实际使用的列名 wide_data <- reshape( data = data, idvar = c("col1", "col2"), # 填写不需要参与透视、需要保留的所有列名 timevar = "names", # 对应原pivot_wider的names_from参数 v.names = "values", # 对应原pivot_wider的values_from参数 direction = "wide" ) # 去除reshape自动生成的列名前缀,和pivot_wider输出格式保持一致 colnames(wide_data) <- gsub("^values\\.", "", colnames(wide_data))
方案3:使用默认预装的reshape2包实现
PowerBI在线服务默认预装了reshape2包,可以用其中的dcast()函数实现相同功能,代码更简洁:
library(reshape2) # ~ 左侧填需要保留的列,多列用+连接,右侧填写要转成列名的字段,value.var填值对应的字段 wide_data <- dcast(data, col1 + col2 ~ names, value.var = "values")
内容的提问来源于stack exchange,提问作者narnia649
相关产品推荐
相关产品推荐

