楼主: peishenfei
10449 13

[问答] 合并list [推广有奖]

  • 0关注
  • 1粉丝

已卖:12份资源

硕士生

3%

还不是VIP/贵宾

-

威望
0
论坛币
114 个
通用积分
0.0600
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
9801 点
帖子
64
精华
0
在线时间
122 小时
注册时间
2015-12-13
最后登录
2018-11-8

楼主
peishenfei 发表于 2017-3-8 01:10:41 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币

如下:
str(scores)
List of 87021
$ :List of 2
  ..$ P: int 6
  ..$ N: int 2
$ :List of 2
  ..$ P: int 4
  ..$ N: int 0
$ :List of 2
  ..$ P: int 1
  ..$ N: int 1
$ :List of 2
  ..$ P: int 6
  ..$ N: int 1
$ :List of 2
  ..$ P: int 2
  ..$ N: int 1
$ :List of 2
  ..$ P: int 3
  ..$ N: int 0

我想要合并成这样的list,list$P=c(6, 4, 1, 6,...),list$N = c(2, 0, 1, 1,...)
请问改用什么样的函数?
谢谢。

二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:list IST scores Cores score

沙发
peishenfei 发表于 2017-3-8 13:06:29 来自手机
我知道apply命令可以,但是有没有更加直接的,就是类似于cbind这样的

藤椅
swyggq 发表于 2017-3-9 20:08:46
感觉你可能是函数没写好
否则应该不会出现这么惨数据的
而且这样效率应该会很低
建议在储存的时候就用matrix之类的格式进行储存

板凳
swyggq 发表于 2017-3-9 20:10:19
P=unlist(scores)[1:len(scores)%%2==1]
N=unlist(scores)[1:len(scores)%%2==0]
大约这样就可以了

报纸
peishenfei 发表于 2017-3-9 23:02:00
swyggq 发表于 2017-3-9 20:08
感觉你可能是函数没写好
否则应该不会出现这么惨数据的
而且这样效率应该会很低
这个数据是从json转过来的,部分json如下所示:
{"reviewerID": "A2IBPI20UZIR0U", "asin": "1384719342", "reviewerName": "cassandra tu \"Yeah, well, that's just like, u...", "helpful": [0, 0], "reviewText": "Not much ...despite their pricing,", "overall": 5.0, "summary": "good", "unixReviewTime": 1393545600, "reviewTime": "02 28, 2014"}
{"reviewerID": "A14VAT5EAX3D9S", "asin": "1384719342", "reviewerName": "Jake", "helpful": [13, 14], "reviewText": "The product ...this product! :]", "overall": 5.0, "summary": "Jake", "unixReviewTime": 1363392000, "reviewTime": "03 16, 2013"}
{"reviewerID": "A195EZSQDW3E21", "asin": "1384719342", "reviewerName": "Rick Bennette \"Rick Bennette\"", "helpful": [1, 1], "reviewText": "The primary... you put it.", "overall": 5.0, "summary": "It Does The Job Well", "unixReviewTime": 1377648000, "reviewTime": "08 28, 2013"}

我直接读,只能保留最后一行,不知道怎么回事,所以我就在}后面都加了个",",然后用[]括起来,就读成现在这个样子了。。。我的目的是想读成data.frame格式,请问该怎么修改这个json(这个文件很大,不能做大改动)

谢谢

地板
peishenfei 发表于 2017-3-9 23:08:49
swyggq 发表于 2017-3-9 20:10
P=unlist(scores)[1:len(scores)%%2==1]
N=unlist(scores)[1:len(scores)%%2==0]
大约这样就可以了
谢谢,这样确实可以

能不能有个按照名字P、N来取,因为P、N只是一个例子,实际数据中,大部分子列表(列表中的列表)项的名称都一样,只不过有那么几个子列表缺几项,比如说只有P,没有N。

7
swyggq 发表于 2017-3-9 23:26:06
能否给几行数据以及你的读入代码……总觉得你的代码可以优化的

8
swyggq 发表于 2017-3-9 23:26:48
以及……“直接读”是什么鬼……
R不支持这种格式吧

9
swyggq 发表于 2017-3-9 23:33:40
如果读入的是一个列表,可以直接用data.frame(a)转换成数据框
如果读入可以改……用a=data.frame(...)就能直接读取数据框的信息
> a=list("reviewerID"= "A2IBPI20UZIR0U", "asin"= "1384719342", "reviewerName"= "cassandra tu \"Yeah, well, that's just like, u...", "helpful"= "[0, 0]", "reviewText"= "Not much ...despite their pricing,", "overall"= 5.0, "summary"= "good", "unixReviewTime"= 1393545600, "reviewTime"= "02 28, 2014")
> data.frame(a)
      reviewerID       asin                                     reviewerName helpful                         reviewText overall summary
1 A2IBPI20UZIR0U 1384719342 cassandra tu "Yeah, well, that's just like, u...  [0, 0] Not much ...despite their pricing,       5    good
  unixReviewTime  reviewTime
1     1393545600 02 28, 2014

10
swyggq 发表于 2017-3-9 23:35:01
不过话说……我并不确定逐行rbind会不会死
a=data.frame(a)
b=data.frame(b)
rbind(a,b)
针对小规模数据是可行的,数据规模扩大的时候……不确定会不会死

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2025-12-27 01:06