手动创建从 fromJSON 函数返回的相同数据框
Manually create the same dataframe returned from fromJSON function
我有一个 JSON 字符串,其中 returns 一个使用 jsonlite 包的数据框。
library(jsonlite)
d <- fromJSON('[{"x":"A","value":100},{"x":"B","value":100},{"x":["A","B"],"value":20}]' )
它给了我
x value
1 A 100
2 B 100
3 A, B 20
但我想手动重新创建相同的数据框。 Class 列 x 是一个列表。
我的尝试如下:
data.frame(x = c("A","B",list(c("A","B"))),value = c(100,100,20))
这给了我一个错误 differing no。行数
我们可以在 base R
中的 list
上用 I
换行
d1 <- data.frame(x = I(list("A", "B", c("A", "B"))), value = c(100, 100, 20))
d1
# x value
#1 A 100
#2 B 100
#3 A, B 20
它将为 "AsIs"、
添加一个 attribute
attr(d1$x, "class")
#[1] "AsIs"
但是忽略属性是一样的数据
all.equal(d1, d, check.attributes = FALSE)
#[1] TRUE
或者如果我们把属性赋值给NULL,也是一样的
attr(d1$x, "class") <- NULL
all.equal(d1, d)
#[1] TRUE
如果我们使用tibble
,则更直接`
library(tibble)
tibble(x = list("A", "B", c("A", "B")), value = c(100, 100, 20))
我有一个 JSON 字符串,其中 returns 一个使用 jsonlite 包的数据框。
library(jsonlite)
d <- fromJSON('[{"x":"A","value":100},{"x":"B","value":100},{"x":["A","B"],"value":20}]' )
它给了我
x value
1 A 100
2 B 100
3 A, B 20
但我想手动重新创建相同的数据框。 Class 列 x 是一个列表。
我的尝试如下:
data.frame(x = c("A","B",list(c("A","B"))),value = c(100,100,20))
这给了我一个错误 differing no。行数
我们可以在 base R
list
上用 I
换行
d1 <- data.frame(x = I(list("A", "B", c("A", "B"))), value = c(100, 100, 20))
d1
# x value
#1 A 100
#2 B 100
#3 A, B 20
它将为 "AsIs"、
添加一个attribute
attr(d1$x, "class")
#[1] "AsIs"
但是忽略属性是一样的数据
all.equal(d1, d, check.attributes = FALSE)
#[1] TRUE
或者如果我们把属性赋值给NULL,也是一样的
attr(d1$x, "class") <- NULL
all.equal(d1, d)
#[1] TRUE
如果我们使用tibble
,则更直接`
library(tibble)
tibble(x = list("A", "B", c("A", "B")), value = c(100, 100, 20))