【问题标题】:Adding a list of data frames to one of the variables in a data frame (R)将数据框列表添加到数据框 (R) 中的变量之一
【发布时间】:2015-02-24 17:01:40
【问题描述】:

我正在尝试创建此处显示的数据结构(从 RJSONIO 读取)。我需要从原始数据在 R 中生成这个结构。如您所见,它是一个包含 4 个变量的数据框,其中第 4 个变量(子项)是数据框列表。我无法找到一种方法来创建包含列表作为其变量之一的数据框。

从 RJSONIO (rjsonio_frame) 读入的数据结构

'data.frame':   5 obs. of  4 variables:
 $ name    : chr  "" "" "" "" ...
 $ imageURL: chr  "images/failure.png" "images/failure.png" "images/failure.png" "images/failure.png" ...
 $ id      : chr  "2" "11" "20" "29" ...
 $ children:List of 5
  ..$ :'data.frame':    8 obs. of  3 variables:
  .. ..$ name    : chr  "word 1" "word 2" "word 3" "word 4" ...
  .. ..$ imageURL: chr  "" "" "" "" ...
  .. ..$ id      : chr  "3" "4" "5" "6" ...
  ..$ :'data.frame':    8 obs. of  3 variables:
  .. ..$ name    : chr  "word 1" "word 2" "word 3" "word 4" ...
  .. ..$ imageURL: chr  "" "" "" "" ...
  .. ..$ id      : chr  "12" "13" "14" "15" ...
  ..$ :'data.frame':    8 obs. of  3 variables:
  .. ..$ name    : chr  "word 1" "word 2" "word 3" "word 4" ...
  .. ..$ imageURL: chr  "" "" "" "" ...
  .. ..$ id      : chr  "21" "22" "23" "24" ...
  ..$ :'data.frame':    8 obs. of  3 variables:
  .. ..$ name    : chr  "word 1" "word 2" "word 3" "word 4" ...
  .. ..$ imageURL: chr  "" "" "" "" ...
  .. ..$ id      : chr  "30" "31" "32" "33" ...
  ..$ :'data.frame':    8 obs. of  3 variables:
  .. ..$ name    : chr  "word 1" "word 2" "word 3" "word 4" ...
  .. ..$ imageURL: chr  "" "" "" "" ...
  .. ..$ id      : chr  "39" "40" "41" "42" ...

我可以轻松创建数据框列表(imageURL 为空白):

list_of_frames

[[1]] 
        name imageURL id
1       word1           3
2       word2           4
3       word3           5
4       word4           6
5       word5           7

[[2]]
        name imageURL id
1       word1           8
2       word2           9
3       word3          10
4       word4          11
5       word5          12

[[3]]
       name imageURL id
1      word1          13
2      word2          14
3      word3          15
4      word4          16
5      word5          17

但是如何将此列表添加到最顶层数据框的字符变量中(假设我已经可以制作所需数据框的其余部分)?我试过这个:

final_frame <- data.frame(name=name_vector, imageURL=image_vector, id=id_vector, children=list_of_frames)

名称、imageURL 和 id 都正确地进入了数据框,但 list_of_frames 没有。如果我在这里将 RSJONIO 的正确版本子集(名称为空白):

rjsonio_frame[[4]]

  name           imageURL id
1      images/failure.png  2
2      images/failure.png 11
3      images/failure.png 20
4      images/failure.png 29
5      images/failure.png 38
                                                                                                        children
1        word 1, word 2, word 3, word 4, word 5, word 6, word 7, word 8, , , , , , , , , 3, 4, 5, 6, 7, 8, 9, 10
2 word 1, word 2, word 3, word 4, word 5, word 6, word 7, word 8, , , , , , , , , 12, 13, 14, 15, 16, 17, 18, 19
3 word 1, word 2, word 3, word 4, word 5, word 6, word 7, word 8, , , , , , , , , 21, 22, 23, 24, 25, 26, 27, 28

不是children变量的外观。我进一步将其子集化:

rjsonio_frame[[4]][[4]]

[[1]]
    name imageURL id
1 word 1           3
2 word 2           4
3 word 3           5
4 word 4           6
5 word 5           7
6 word 6           8
7 word 7           9
8 word 8          10

[[2]]
    name imageURL id
1 word 1          12
2 word 2          13
3 word 3          14
4 word 4          15
5 word 5          16
6 word 6          17
7 word 7          18
8 word 8          19

[[3]]
    name imageURL id
1 word 1          21
2 word 2          22
3 word 3          23
4 word 4          24
5 word 5          25
6 word 6          26
7 word 7          27
8 word 8          28

这看起来像我的 list_of_frames。但我的 final_frame 没有显示这一点。

【问题讨论】:

  • 你试过.. ,children=I(list_of_frames))

标签: json r list dataframe


【解决方案1】:

只要把它放在data.frame初始化之外,这样data.frame()就不会取消列出孩子:

final_frame <- data.frame(
  name=name_vector, 
  imageURL=image_vector, 
  id=id_vector)

final_frame$children <- list_of_frames

编辑(为了完整起见):

... 或如 akrun 建议的那样 - 您可以通过

来禁止转换
final_frame <- data.frame(
  name=name_vector, 
  imageURL=image_vector, 
  id=id_vector,
  children = I(list_of_frames))

【讨论】:

    猜你喜欢
    • 2012-04-11
    • 1970-01-01
    • 2022-07-05
    • 1970-01-01
    • 1970-01-01
    • 2017-11-27
    • 2019-06-18
    • 2021-06-17
    • 2020-08-02
    相关资源
    最近更新 更多