簡體   English   中英

將Neo4j數據加載到R中

[英]Loading Neo4j Data into R

我正在嘗試直接從R訪問Neo4j數據以進行一些網絡分析

我已經讀過這篇文章: 將neo4j與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行的數據框+ print(data)NULL

難道我做錯了什么?

該函數用於返回表格數據,而您正在返回節點。 因此,數據幀錯誤。 該功能還存在一些問題。 它不能返回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")

所以我解決了我的問題。 這是新代碼的樣子:

#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我也忘記了返回數據,並且正在返回名稱(數據)。

如果您的查詢錯誤,也可能會出現null。 希望這也對遇到我問題的人有所幫助!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM