我尝试使用R中data.tree库中的as.Node函数将一组媒体服务器日志数据可视化为树。我按月和按年对原始数据框进行了子集,这样我就可以一次运行一个月的数据。我将数据转换为树,然后将其打印为.csv的功能代码如下:
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)
任何人都可以就未使用的参数(quote())&#39;提供一些指导。手段?我试过谷歌搜索它,并发现在某些情况下,它意味着已经在另一个上下文中定义了一个函数或术语。但我还是太新手了解这意味着什么。
我在Mac OS 10.11.5上运行rStudio 0.99.896和R 3.2.4。我会分享我的数据集,除非它非常庞大,而且我不确定哪些行导致了这个问题...
答案 0 :(得分:1)
我不能为此声称信誉;克里斯托夫格鲁尔(见主帖上的评论)弄清楚了。但是,分享原因和我的解决方案可能对其他人有用:
问题是一些日志文件包含data.tree包中的一个保留字,在本例中为“path”。这些行的格式是“/something/something/path/something/something.jpg”,因此data.tree将“path”视为一个独立的单词。还有其他“路径”实例作为较大单词的一部分,例如“pathString”或“pathTo”,它们不会导致错误。
一旦他弄清楚了,我的解决方案是在终端中的所有日志文件上运行以下命令:
sed -i '' 's/\/path\//\/spath\//' *.log
我仍然是新手,但据我所知,这意味着“在所有.log文件中找到并替换”/ path /“与”/ spath /“的实例。”我实际上并不关心那个词,路径与spath(这是胡言乱语),所以改变它并不重要。现在,as.Node()函数在数据集上正常运行。
谢谢Christoph!