Rapidminer中的R脚本

时间:2017-11-06 10:38:16

标签: r export igraph rapidminer

也许有人可以帮我解决我的问题。

我正在使用RapidMiner和R-Script运算符,并使用以下R脚本处理369 x 258出现的matix:

# rm_main is a mandatory function, 
# the number of arguments has to be the number of input ports (can be none)
rm_main = function(data)
{
total_occurrence <- colSums(data)
data_matrix <- as.matrix(data)
co_occurrence <- t(data_matrix) %*% data_matrix
library(igraph)
graph <- graph.adjacency(co_occurrence,
                          weighted = TRUE,
                          mode="undirected",
                          diag = FALSE)
tkplot(graph,
        vertex.label=names(data),
        vertex.size=total_occurrence*1,
        edge.width=E(graph)$weight*1,)

dev.copy (tk_postscript, file= '/home/knecht/r-graph.pdf')
dev.off()
}

创建图形后,流程终止,并显示错误消息&#34;无法从空设备复制&#34;。

所以我的问题是,如何在postscript或png等文件中打印图形?

善意的考虑

托拜厄斯

1 个答案:

答案 0 :(得分:1)

我无法让R代码在RapidMiner之外工作,所以我做了一些更改来打印而不是使用tkplot(这是交互式的,所以可能无论如何都要努力)。

我还在代码中添加了一些简单的数据,以使示例可重现。

将创建的png文件的位置更改为要存储结果的位置(RapidMiner使用临时本地文件夹,因此您必须明确该位置)。

rm_main = function(data)
{
    data2 = matrix(c(1,2,3,1,2,1), nrow = 2, ncol = 3)
    total_occurrence <- colSums(data2)
    data_matrix <- as.matrix(data2)
    co_occurrence <- t(data_matrix) %*% data_matrix
    library(igraph)
    graph <- graph.adjacency(co_occurrence,
                      weighted = TRUE,
                      mode="undirected",
                      diag = FALSE)
    png('c:/temp/r-graph.png')                     
    plot(graph,
       vertex.label=names(data2),
        vertex.size=total_occurrence*1,
        edge.width=E(graph)$weight*1,)
    dev.off()
return(list(data))
}