r - 如何使用 R 将每一行的数据帧转换为 json?
问题描述
我有数据框。df1: ('array' 列是 json 数组)
df1 <- data.frame(email = c('user1', 'user2', 'user3', 'user4'), date = c('2021.07.07', '2021.07.07', '2021.07.07','2021.07.07'), timestamp=c(1625643960,1625643961,1625643962,1625643963), type=c('general','general','special','special'),
array=c('[{"id":"id1","name":"name1"},{"id":"id2","name":"name2"},{"id":"id3","name":"name3"}]', '[{"id":"id1","name":"name1"},{"id":"id2","name":"name2"},{"id":"id3","name":"name3"}]', '[{"id":"id5","name":"name5"},{"id":"id2","name":"name2"},{"id":"id3","name":"name5"}]', '[{"id":"id4","name":"name4"},{"id":"id2","name":"name2"},{"id":"id3","name":"name6"}]'))
如何在没有 for 循环的情况下制作 df2?
解决方案
您可以使用sprintf
:
result <- cbind(df1[1], json = with(df1,
sprintf('{"email":"%s", "date":"%s", "timestamp":%d,
"type": "%s", "array":%s', email, date, timestamp, type, array)))
result
# email
#1 user1
#2 user2
#3 user3
#4 user4
#json
#1 {"email":"user1", "date":"2021.07.07", "timestamp":1625643960, "type": "general", "array":[{"id":"id1","name":"name1"},{"id":"id2","name":"name2"},{"id":"id3","name":"name3"}]
#2 {"email":"user2", "date":"2021.07.07", "timestamp":1625643961, "type": "general", "array":[{"id":"id1","name":"name1"},{"id":"id2","name":"name2"},{"id":"id3","name":"name3"}]
#3 {"email":"user3", "date":"2021.07.07", "timestamp":1625643962, "type": "special", "array":[{"id":"id5","name":"name5"},{"id":"id2","name":"name2"},{"id":"id3","name":"name5"}]
#4 {"email":"user4", "date":"2021.07.07", "timestamp":1625643963, "type": "special", "array":[{"id":"id4","name":"name4"},{"id":"id2","name":"name2"},{"id":"id3","name":"name6"}]
推荐阅读
- android - 如何修复 Retrofit Android Studio 中的 500 响应代码错误
- firebase - 如何在 Firebase 模拟器中存根外部服务?
- javascript - 在 Firestore 中添加新字段
- java - Java 11 的 Evosuite 插件问题
- ebay-api - 如何通过 ItemID Ebay SDK 获取产品列表
- c# - 通过网络分发应用程序时未捕获 FileNotFoundException
- jenkins - 是否可以从 Jenkinsfile 运行 Jenkinsfile
- arrays - Bash脚本 - 函数退出时全局变量变为空
- angular - 在我的服务器上部署 Angular 应用程序似乎没有做任何事情
- python - 如何使用 python 在 100 x 100 网格上显示图像