楼主: knowbody
2154 2

[问答] 列表去重 [推广有奖]

  • 0关注
  • 1粉丝

已卖:10份资源

硕士生

42%

还不是VIP/贵宾

-

威望
0
论坛币
780 个
通用积分
4.4490
学术水平
2 点
热心指数
5 点
信用等级
3 点
经验
14097 点
帖子
143
精华
0
在线时间
187 小时
注册时间
2012-3-11
最后登录
2025-12-4

楼主
knowbody 发表于 2016-11-24 15:03:26 |AI写论文
20论坛币
假设现在有3个列表,
a = (1:4, 2,3)
b = (2:5, 1:3)
c=(4: 7, 1:4)
然后列表o = list(a, b, c),并且这三个列表是按行储存在列表o里的,这三个子列表是不等长的,但是c的长度最长为8。那么我现在如果想把每个子列表里面的重复值都去掉,并且替换为0,使每个子列表的长度都变成8,请高手指教下,谢谢。

before:
o = [ [ 1,2,3,4,2,3],
        [2,3,4,5,1,2,3],
        [4,5,6,7,1,2,3,4] ]

after:
p = [ [ 1,2,3,4,0,0,0,0],
        [2,3,4,5,1,0,0,0],
        [4,5,6,7,1,2,3,0] ]

最佳答案

关键词:Before After list 重复值 IST Programming

沙发
stzhao 在职认证  发表于 2016-11-24 15:03:27
  1. o <-  list(a = c(1,2,3,4,2,3),
  2.            b = c(2,3,4,5,1,2,3),
  3.            c = c(4,5,6,7,1,2,3,4))

  4. max_length <- max(sapply(o, length))
  5. for (i in 1:length(o)) {
  6.   length(o[[i]]) <- max_length
  7.   o[[i]][is.na(o[[i]])] <- 0
  8.   o[[i]][duplicated(o[[i]])] <- 0
  9. }

  10. o
复制代码

藤椅
knowbody 发表于 2016-11-24 17:22:34
stzhao 发表于 2016-11-24 15:03
高手啊,我虽然没看懂,但就是我要的结果。
非常感谢!

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

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