【问题标题】:R: Error in sort.list(bx[m$xi]) : 'x' must be atomic for 'sort.list' Have you called 'sort' on a list? Merge data frames errorR:sort.list(bx[m$xi]) 中的错误:对于 'sort.list','x' 必须是原子的 你有没有在列表上调用过'sort'?合并数据帧错误
【发布时间】:2018-09-07 13:54:46
【问题描述】:

我有两个要合并的数据框。数据框如下所示:

> head(tk1_h)
    userId                  hobbies
1 102802401691 566588ca00016a4e470bb345
2 102802401691 566588ca00016a4e470bb34c
3 102802401691 575949efb3e4c06ffd5384e1
4 102802401691 55b3cd55ef481d737db42084
5 102802401691 566588ca00016a4e470bb350
6 102802401691 566588ca00016a4e470bb34c

> head(tags)
          _id              type     content
1 55a9098ad77b192554c38d50 feed adok-veszek
2 55a909a4d77b192554c38d51 feed keres-kínál
3 55a909dad77b192554c38d52 feed   jó-helyek
4 55a909e6d77b192554c38d53 feed     oktatás
5 55a909ebd77b192554c38d54 feed     program
6 55a909f0d77b192554c38d55 feed       sport

在这里,“爱好”和“_id”是相同的,所以通过合并两个数据框,我将看到哪个用户有哪些爱好(

tk1_h2 <- merge.data.frame(tk1_h, tags, by.x = "profile", by.y = "_id")

by.x = "profile" 因为 tk1_h 数据框是嵌套的,看起来像这样:

> str(tk1_h)
'data.frame':   27716 obs. of  2 variables:
 $ userId : num  1.03e+11 1.03e+11 1.03e+11 1.03e+11 1.03e+11 ...
 $ profile:'data.frame':    27716 obs. of  1 variable:
 ..$ hobbies: chr  "566588ca00016a4e470bb345" "566588ca00016a4e470bb34c" 
 "575949efb3e4c06ffd5384e1" "55b3cd55ef481d737db42084" ...

合并两个数据框会返回此错误:

 Error in sort.list(bx[m$xi]) : 'x' must be atomic for 'sort.list'
 Have you called 'sort' on a list?

我看过其他关于这个问题的堆栈溢出帖子,但 unlist() 并没有帮助我。 如何正确编码合并两个数据框? 谢谢!

【问题讨论】:

  • 请包含您的样本数据的dput
  • str(tk1_h):$profile是一个数据框!

标签: r merge nested-lists


【解决方案1】:

据我所知,问题在于您有一个嵌套的数据框。除了取消列出嵌套数据框(将其转换为向量)之外,我想不出任何解决方案:

tk1_h$profile <- unlist(tk1_h$profile)

【讨论】:

  • 是的,这行得通,谢谢!由于某种原因,当我这样做时,它以前不起作用,但现在它起作用了
  • 很高兴能帮上忙!!
猜你喜欢
  • 2016-08-26
  • 1970-01-01
  • 2018-01-28
  • 2017-05-03
  • 1970-01-01
  • 2017-10-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多