gpt4 book ai didi

r - 如何使用向量或数据帧在 RNeo4j 中创建节点

转载 作者:行者123 更新时间:2023-12-04 06:18:49 25 4
gpt4 key购买 nike

流行的图数据库Neo4j可以在R内使用感谢包/驱动程序 RNeo4j ( https://github.com/nicolewhite/Rneo4j )。

包作者,@ NicoleWhite , 提供 several great examples其在 GitHub 上的用法.

对我来说不幸的是,@NicoleWhite 给出的示例和文档有点过于简单化,因为它们手动创建了每个图形节点及其关联的 labelsproperties , 如:

mugshots = createNode(graph, "Bar", name = "Mugshots", location = "Downtown")
parlor = createNode(graph, "Bar", name = "The Parlor", location = "Hyde Park")
nicole = createNode(graph, name = "Nicole", status = "Student")
addLabel(nicole, "Person")

当您处理一个很小的示例数据集时,这一切都很好,但是这种方法对于具有数千个用户的大型社交图这样的东西不可行,其中每个用户都是一个节点(此类图可能不会利用其中的每个节点)每个查询,但它们仍然需要输入到 Neo4j )。

我试图弄清楚如何使用向量或数据框来做到这一点。是否有解决方案,也许需要一个 apply声明或 for环形?

这个基本的尝试:
for (i in 1:length(df$user_id)){
paste(df$user_id[i]) = createNode(graph, "user", name = df$name[i], email = df$email[i])
}

导致 Error: 400 Bad Request

最佳答案

作为第一次尝试,您应该查看我刚刚为事务端点添加的功能:

http://nicolewhite.github.io/RNeo4j/docs/transactions.html

library(RNeo4j)

graph = startGraph("http://localhost:7474/db/data/")
clear(graph)

data = data.frame(Origin = c("SFO", "AUS", "MCI"),
FlightNum = c(1, 2, 3),
Destination = c("PDX", "MCI", "LGA"))


query = "
MERGE (origin:Airport {name:{origin_name}})
MERGE (destination:Airport {name:{dest_name}})
CREATE (origin)<-[:ORIGIN]-(:Flight {number:{flight_num}})-[:DESTINATION]->(destination)
"

t = newTransaction(graph)

for (i in 1:nrow(data)) {
origin_name = data[i, ]$Origin
dest_name = data[i, ]$Dest
flight_num = data[i, ]$FlightNum

appendCypher(t,
query,
origin_name = origin_name,
dest_name = dest_name,
flight_num = flight_num)
}

commit(t)

cypher(graph, "MATCH (o:Airport)<-[:ORIGIN]-(f:Flight)-[:DESTINATION]->(d:Airport)
RETURN o.name, f.number, d.name")

在这里,我形成了一个 Cypher 查询,然后遍历一个数据框并将值作为参数传递给 Cypher 查询。您现在的尝试会很慢,因为您要为每个创建的节点发送一个单独的 HTTP 请求。通过使用事务端点,您可以在单个事务下创建多个事物。如果您的数据框非常大,我会将其拆分为每个事务大约 1000 行。

作为第二次尝试,您应该考虑在 neo4j-shell 中使用 LOAD CSV。

关于r - 如何使用向量或数据帧在 RNeo4j 中创建节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25295590/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com