我收到了一个JSON文件,可以使用
将其作为列表读入Rlibrary(jsonlite)
data <- jsonlite::fromJSON(URL)
data
是一个既包含数据列又包含data frame
的列表。例如
temp = list(id = c(1, 2, 3), name = c("banana", "organge", "apple"), type = data.frame(colour=c("red", "blue", "green", "purple"), shape = c("round", "round", "square", "square")))
> temp
$id
[1] 1 2 3
$name
[1] "banana" "organge" "apple"
$type
colour shape
1 red round
2 blue round
3 green square
4 purple square
如何在不丢失信息的情况下将该列表转换为数据框?在这种情况下,我想嵌套数据框中的每一行都将与列表中的一行对齐。结果应为
id name type.colour type.shape
1 1 banana red round
2 1 banana blue round
3 1 banana green square
4 1 banana purple square
5 2 orange red round
6 2 orange blue round
7 2 orange green square
8 2 orange purple square
9 3 apple red round
10 3 apple blue round
11 3 apple green square
12 3 apple purple square
答案 0 :(得分:1)
对于这种特定情况,您可以使用以下代码:
DFidxs <- rep(seq_len(nrow(temp$type)),times=length(temp$id))
colidxs <- rep(seq_len(length(temp$id)),each=nrow(temp$type))
DF <- cbind(id = temp$id[colidxs],
name = temp$name[colidxs],
temp$type[DFidxs,])
> DF
id name colour shape
1 1 banana red round
2 1 banana blue round
3 1 banana green square
4 1 banana purple square
1.1 2 organge red round
2.1 2 organge blue round
3.1 2 organge green square
4.1 2 organge purple square
1.2 3 apple red round
2.2 3 apple blue round
3.2 3 apple green square
4.2 3 apple purple square
假设id
,name
(以及其他向量/列)的长度相同,则可以重复使用此代码来复制type
data.frame中每个元素的行列并将其绑定。