2016-05-23 88 views
0

我試圖使用R中的data.tree庫中的as.Node函數將一組介質服務器日誌數據可視化爲樹。我按月份和年份對原始數據框進行了子集劃分,以便每次運行一個月的數據。我將數據轉換爲樹形結構,然後將其打印爲.csv的功能代碼如下:從R中的data.tree包運行as.Node

treetrimmer2 <- function(x, y) { 
    urimodel <- as.Node(x) 
    uridf <- ToDataFrameTree(urimodel, "level", "count") 
    uridf <- filter(uridf, level <= y, count != 0) 
    filename <- paste(x$year[1], x$month[1], ".csv", sep="") 
    write.csv(uridf, file = filename, fileEncoding = "CP1252") 
} 

一些月份完成後沒有任何問題。其他月份,但是,給我下面的錯誤(和回溯):

Error in (function() : unused argument (quote(<environment>)) 

7 (function() 
{ 
    c(self$parent$path, self$name) 
})(quote(<environment>)) 
6 self$AddChildNode(child) 
5 mynode$AddChild(path) 
4 FromDataFrameTable(x, pathName, pathDelimiter, colLevels, na.rm) 
3 as.Node.data.frame(x) 
2 as.Node(x) at media_visualizer.R#63 
1 treetrimmer2(uricut$`2015.06`, 5) 

誰能給我什麼「未使用的參數(報價())」的意思是一些指導?我嘗試過使用Google搜索,發現在某些情況下,這意味着一個函數或術語已經在另一個上下文中定義。但我仍然太新手瞭解這裏的含義。

我在Mac OS 10.11.5上運行rStudio 0.99.896和R 3.2.4。我會分享我的數據集,除非它非常龐大,而且我不確定哪條線路導致問題...

+0

這看起來像一個錯誤。不幸的是我無法複製它。那麼你可以給我發送數據集嗎? (作爲data.tree維護者提供的電子郵件:請參閱https://cran.r-project.org/web/packages/data.tree/)。另外:你是否在使用data.tree 0.3.5(即目前來自CRAN的最新版本)? –

+0

我很高興分享我的數據集。通過將其分成兩部分並分兩部分運行的逐步過程,我可以將問題縮小到一組20,000行,這將適用於電子郵件。我正在使用data.tree 0.3.5。 –

+0

這是一個非常有趣的錯誤。請參閱https://github.com/gluc/data.tree/issues/65 –

回答

1

我不能爲此承認功勞;克里斯托弗·格魯爾(見主要評論)明白了。但它可能會有助於其他人分享原因,我的解決方案:

問題是,一些日誌文件包含data.tree包的保留字之一,在這種情況下,「路徑」。這些行的格式是「/something/something/path/something/something.jpg」,因此data.tree將「路徑」作爲獨立的單詞來讀取。還有其他「路徑」實例作爲較大單詞的一部分,例如「pathString」或「pathTo」,它們不會導致錯誤。

一旦他已經想通了,我的解決辦法是在終端上的所有日誌文件的運行以下命令:

sed -i '' 's/\/path\//\/spath\//' *.log 

我還是個新手,但據我瞭解,是什麼這意味着「在所有.log文件中查找並替換」/ path /「的實例,並將其替換爲」/ spath /「。」我實際上並不關心那個單詞,路徑與spath(這是胡言亂語),所以改變它並不重要。現在,as.Node()函數在數據集上正常運行。

謝謝Christoph!