【问题标题】:Loading Neo4j Data into R将 Neo4j 数据加载到 R 中
【发布时间】:2014-07-23 16:34:39
【问题描述】:

我正在尝试直接从 R 访问我的 Neo4j 数据以进行一些网络分析

我已经读过这个: Use neo4j with R

所以我尝试使用他们的代码:

#install.packages('RCurl')
#install.packages('RJSONIO')

library('bitops')
library('RCurl')
library('RJSONIO')

query <- function(querystring) {
  h = basicTextGatherer()
  curlPerform(url="myhost:7474/db/data/ext/CypherPlugin/graphdb/execute_query",
    postfields=paste('query',curlEscape(querystring), sep='='),
    writefunction = h$update,
    verbose = FALSE
  )           
  result <- fromJSON(h$value())
  #print(result)
  data <- data.frame(t(sapply(result$data, unlist)))
  print(data)
  names(data) <- result$columns

}

q <-"start a = node(50) match a-->b RETURN b"
 data <- query(q)
 print(data)

但我得到的只是:

0 列 1 行的数据框 + 打印(数据) 空

我做错了吗?

【问题讨论】:

    标签: r neo4j


    【解决方案1】:

    该函数用于返回表格数据,而您正在返回一个节点。因此数据帧错误。该功能也有一些问题。它不能返回 1 列数据并且它没有 NULL 处理。考虑在此处使用 RNeo4j 驱动程序:

    http://nicolewhite.github.io/RNeo4j/

    library(RNeo4j)
    graph = startGraph("http://localhost:7474/db/data/")
    query = "MATCH (n:`layer_1_SB`)-[r]-> (m) WHERE m:layer_2_SB RETURN n.userid, m.userid"
    data = cypher(graph, query)
    write.table(data, file = "filename.file")
    

    【讨论】:

      【解决方案2】:

      所以我解决了我的问题。新代码如下所示:

      #install.packages('RCurl')
      #install.packages('RJSONIO')
      
      library('bitops')
      library('RCurl')
      library('RJSONIO')
      
      query <- function(querystring) {
        h = basicTextGatherer()
        curlPerform(url="myhost:7474/db/data/cypher",
          postfields=paste('query',curlEscape(querystring), sep='='),
          writefunction = h$update,
          verbose = FALSE
        )           
        result <- fromJSON(h$value())
        #print(result)
        data <- data.frame(t(sapply(result$data, unlist)))
        print(data)
        names(data) <- result$columns
        data
      
      }
      
      q <-"MATCH (n:`layer_1_SB`)-[r]-> (m) WHERE m:layer_2_SB RETURN n.userid, m.userid"
       data <- query(q)
       head(data)
       dim(data)
       names(data)
       write.table(data, file = "/home/angello-maggio/data2.dat", append=FALSE,quote=FALSE,sep=" ",eol="\n", na="NA", dec=".", row.names=FALSE)
      

      如您所见,如果您使用的是 neo4j 2.x,则应使用路径 /db/data/cypher 而不是 /db/data/ext/CypherPlugin/graphdb/execute_query,而且我忘记返回数据,而是返回名称(数据)。

      如果您的查询错误,也可能会出现空值。 希望这对遇到我的问题的人也有帮助!

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-12-30
        • 2015-11-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-06-03
        相关资源
        最近更新 更多