2016-11-15 91 views
0

親愛的

我運行功率BI下述R腳本,以獲得「data2016」和「DF」作爲輸出數據的目的(都是數據幀)。使用sapply()我正在使用函數inputFreq(),這是一個自制函數,用於計算向量中條目的頻率。該功能採用的是()內(除其他事項外,見下文)功率BI找不到功能是()在A R腳本

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]))) 

信息錯誤

做獲取數據後>其它> [R腳本和粘貼(所有電力BI環境),我得到以下錯誤

詳細信息:「ADO.NET,R腳本錯誤在inputFreq 錯誤(data2016 $ VAR1 [1:100]): 找不到的功能。 「是」 電話:頭部 - >如.data.frame - > inputFreq 執行停止

調用的函數inputFreq()裏面有is()函數。對於信息,here's功能:

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環境表現良好,問題似乎是,當雙向電力試圖從閱讀的是()函數方法-R。

有什麼建議嗎?非常感謝!!

+0

你試過函數'is.factor()'嗎? –

+1

'is'位於方法包中。也許Power BI不加載它?你可以用'methods :: is' – James

+0

或'library(methods)'來指定命名空間' –

回答

1

似乎PowerBI使用Rscript.exe,R的命令行版本用於運行沒有基於GUI的前端腳本。 Rscript doesn't load the methods package,這是定義is函數的地方。

爲了解決這個問題,請執行下列操作之一: