我正在尝试创建此处显示的数据结构(从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)
name,imageURL和id都正确进入数据框,但list_of_frames没有。如果我在这里将RSRONIO的CORRECT版本分配(名称为空白):
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
不是儿童变量的外观。我进一步将其分配给我:
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没有显示出来。
答案 0 :(得分: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))