Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/66.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
jsonlite正在创建一个data.frame,其中一列为data.frame类_R_Dataframe_Jsonlite - Fatal编程技术网

jsonlite正在创建一个data.frame,其中一列为data.frame类

jsonlite正在创建一个data.frame,其中一列为data.frame类,r,dataframe,jsonlite,R,Dataframe,Jsonlite,我的json文件作为列表被json_lite::read_json读取到R中 要重现我的问题,请将下面的代码从任何文本编辑器保存为.json文件,然后将该文件读入R { "data": [ { "type": "invite", "send_date": "2018-05-01" }, { "type": "reminder", "send_date": "2018-05-03", "tokens": { "email_subject": "REMINDER: Franchise Exit Su

我的json文件作为列表被json_lite::read_json读取到R中

要重现我的问题,请将下面的代码从任何文本编辑器保存为.json文件,然后将该文件读入R

{
"data": [
{
"type": "invite",
"send_date": "2018-05-01"
},
{
"type": "reminder",
"send_date": "2018-05-03",
"tokens": {
"email_subject": "REMINDER: Franchise Exit Survey"
}
},
{
"type": "reminder",
"send_date": "2018-05-07",
"tokens": {
"email_subject": "REMINDER: Franchise Exit Survey"
}
}
],
"relationships": {
"invitee": {
"data": {
"id": "b292aa38"
}
}
}
}
您可以将json文件读入R

library(jsonlite)
library(dplyr)
library(readr)

file_json <- "json_saved_from_text_editor.json"

l_json <- read_json(file_json, simplifyVector = TRUE) 

# to view the data.frame portion of l_json whose third column is itself a data.frame:
l_json[[1]]
此列表的第一个元素是class data.frame,其第三列也是class data.frame。我在tibbles中使用过列表列,但从未遇到过data.frame类列为data.frame的data.frame。重要的是,类data.frame的这个列的行为与我遇到的任何其他列类都非常不同。它不能不列出,并且它的值对整个data.frame的维度很敏感

有没有一种方法可以操纵、创建或避免列的data.frame类


我的最终目标是能够从数据帧重新创建这个小json文件。但我不知道如何操作或创建这些data.frame列

您需要处理json中嵌套的几个点。为了方便起见,我将df$data中的实际数据保存为df_data,它有一个列标记,它本身就是一列的数据帧,email_subject。如果运行df_data%>%pulltokens%>%pullMail_subject,您将获得电子邮件主题行的向量,您可以将其放入新的数据框中

df_data <- df$data

df_fix <- bind_cols(
    df_data %>% select(type, send_date),
    email_subject = df_data %>% pull(tokens) %>% pull(email_subject)
)
然后,输出如下所示:

      type  send_date                   email_subject
  invite   2018-05-01                            <NA>
  reminder 2018-05-03 REMINDER: Franchise Exit Survey
  reminder 2018-05-07 REMINDER: Franchise Exit Survey