power BI无法在R脚本中找到函数is()

时间:2016-11-15 11:52:17

标签: r powerbi

亲爱的所有

我在power BI中运行以下R脚本,目的是将“data2016”和“df”作为输出数据(两者都是数据帧)。使用sapply(),我将获取函数inputFreq(),它是一个自制函数,用于计算向量中条目的频率。该函数使用is()内部(除其他外,请参见下面的详细信息)

setwd("C:/Users/Home/Documents/folder")
data2016 <- read.csv("rawData2016.csv", header = TRUE)
sapply(list.files(pattern="[.]r$", full.names=TRUE), FUN=source)
df <- head(as.data.frame(inputFreq(data2016$var1[1:100])))

消息错误

获取数据后&gt;其他&gt; r脚本和粘贴(所有功能BI环境),我收到以下错误

  

详细信息:“ADO.NET:R脚本错误。   inputFreq出错(data2016 $ var1 [1:100]):     找不到功能“是”   电话:头 - &gt; as.data.frame - &gt; inputFreq   执行暂停

调用函数inputFreq()里面有is()函数。有关信息,请参阅以下函数:

inputFreq <- function(x){

  if( is(x, "factor") == TRUE ) {
    x <- as.character(x)
  } else {
    x
  }

  a <- sort(x)
  n <- length(a)
  k <- numeric(n)
  f <- numeric(n)

  # vector k: algoritmo para computar la frecuencia maxima en vector 'a'

  k[1] <- 1
  for (i in 2:n){
    if ( a[i]==a[i-1] ){
      k[i] <- 1 + k[i-1]
    }  else {
      k[i] <- 1
    }

  }

  # vector N: algoritmo para imputar la frecuencia maxima de cada a(i)

  f[n] <- k[n]
  for (j in (n-1):1){
    if ( k[j] < k[j+1] ){
      f[j] <- f[j+1]
    }  else {
      f[j] <- k[j]
    }
  }

  return( cbind( "x" = x, "fr.x" = f[match(x,sort(x))] ) )
}

更多信息

该函数在rstudio环境中已经表现良好,问题似乎是当电源BI尝试从方法-R读取is()函数时。

有什么建议吗?非常感谢!!

1 个答案:

答案 0 :(得分:1)

似乎PowerBI使用Rscript.exe,R的命令行版本用于运行没有基于GUI的前端的脚本。 Rscript doesn't load the methods package,这是定义is函数的地方。

要解决此问题,请执行以下操作之一: