首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >应用函数jsonlite

应用函数jsonlite
EN

Stack Overflow用户
提问于 2015-02-26 15:47:18
回答 1查看 276关注 0票数 0

我有一个简单的data.frame df

代码语言:javascript
复制
a    b    c     d
1    5    A     E
2    4    B     F
3    3    C     G
4    2    D     H
5    1    E     J

假设我想用JSON格式编写它:

代码语言:javascript
复制
jsonlite::toJSON(df[1,])

返回:

代码语言:javascript
复制
[{"a":1,"b":10,"c":"A","d":"J"}]

然而,

代码语言:javascript
复制
apply(df[1,], 1, jsonlite::toJSON)

返回:

代码语言:javascript
复制
"[\"1\",\"10\",\"A\",\"J\"]"

我变量的名字去哪了?我怎么才能把它们拿回来?

谢谢,

卡洛斯

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-02-26 16:07:20

help(apply)告诉你:

代码语言:javascript
复制
 If ‘X’ is not an array but an object of a class with a non-null
 ‘dim’ value (such as a data frame), ‘apply’ attempts to coerce it
 to an array via ‘as.matrix’ if it is two-dimensional (e.g., a data
 frame) or via ‘as.array’.

因此,toJSON可以看到数据帧的每一行的字符向量。

解决方案是拆分数据帧并使用lapply

代码语言:javascript
复制
> lapply(split(df, 1:nrow(df)), jsonlite::toJSON)
$`1`
[{"a":1,"b":5,"c":"A","d":"E"}] 
$`2`
[{"a":2,"b":4,"c":"B","d":"F"}] 
$`3`
[{"a":3,"b":3,"c":"C","d":"G"}] 
$`4`
[{"a":4,"b":2,"c":"D","d":"H"}] 
$`5`
[{"a":5,"b":1,"c":"E","d":"I"}] 
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28746784

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档