list()包含一个元素,但里面有字符串矩阵,如何将此元素转换为矩阵?

时间:2014-08-24 06:38:32

标签: json r list matrix jsonlite

使用jsonlite将JSON数据转换为列表后,我最终得到的列表如下所示 在这种情况下,第10个元素包含9列(始终固定)和2行(每次都变化)的列表。

mat <- lset$data$comments$data[10]

mat
[[1]]
                                   id can_remove             created_time           from.id
1 10152663742099258_10152663749369258       TRUE 2014-07-01T11:10:29+0000 10203711779968366
2 10152663742099258_10152663842204258       TRUE 2014-07-01T12:15:57+0000         706804257
3 10152663742099258_10152663929639258       TRUE 2014-07-01T13:25:28+0000 10152738599744416
4 10152663742099258_10152663976344258       TRUE 2014-07-01T13:59:33+0000         706804257
         from.name like_count
1      Aileen Yeow          1
2    Tejas Damania          0
3 Sandeep Kulkarni          1
4    Tejas Damania          0
                                                                                                   message
1                                                                                           Lame statement
2 Don't forget, people like you only because they don't know you! <ed><U+00A0><U+00BD><ed><U+00B8><U+00A1>
3      ...for a second I thought it's Accenture Singapore office with some new theme similar to its brand!
4         This is shanghai and nothing to do with firm I work for <ed><U+00A0><U+00BD><ed><U+00B8><U+008E>
  user_likes
1      FALSE
2      FALSE
3       TRUE
4      FALSE

全垫将我们列为[1] 如您所见,它包含列表(在列表中?)。当我打印垫子然后它显示如上所示的结构。

typeof(mat)
[1] "list"

substring(mat,1,100)
[1] "list(id = c(\"10152663742099258_10152663749369258\", \"10152663742099258_10152663842204258\", \"101526637"

我无法从中访问特定元素(比如消息)。我也无法将其转换为字符串矩阵,因此我可以以结构化方式访问元素。

1 个答案:

答案 0 :(得分:0)

我通过设置simplifyVector = FALSE(默认设置为true)将fromJSON调用参数更改为

lset <- fromJSON(jsonobj, simplifyVector = F, flatten=TRUE, unicode = TRUE)

这改变了mat的形成方式,代码一直保持嵌套到每个叶子元素。我可以使用$继续深入,只在叶元素中找到字符串值! lset$data[[x]]$comments$data[[y]]$from$name

现在有效!感谢所有的帮助