楼主: 水舞者
5687 5

[问答] list提取长度大于某值的元素 [推广有奖]

  • 0关注
  • 2粉丝

本科生

48%

还不是VIP/贵宾

-

威望
0
论坛币
42 个
通用积分
0
学术水平
0 点
热心指数
1 点
信用等级
2 点
经验
1489 点
帖子
67
精华
0
在线时间
62 小时
注册时间
2015-6-7
最后登录
2021-7-22

楼主
水舞者 发表于 2016-1-7 10:28:50 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
我有一个list,如何提取list中所有元素长度大于3的元素呢?比如:
l
$a
[1] 1 2 3 4 5

$b
[1] 1 2

$c
[1] 1 2 3

$d
[1] 1 2 3 4 5 6

我想要长度大于2的元素的列表:
$a
[1] 1 2 3 4 5

$c
[1] 1 2 3

$d
[1] 1 2 3 4 5 6


我想知道如何写比较简便一些呢?谢谢!
二维码

扫码加我 拉你入群

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

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

关键词:list IST 如何提取 如何写 元素 如何

沙发
水舞者 发表于 2016-1-7 10:33:13
因为如果我是这样的写法:
three<-lapply(x,function(xx){
        if(dim(xx)[1]>=3){
                xx
        }
})
那么最后出来的结果长度仍然是原来的长度,虽然找出了大于3的长度的元素,但是其他的会变成NULL:
[[82]]
NULL

[[83]]
NULL

类似于这样。。。

藤椅
水舞者 发表于 2016-1-7 11:04:28
好吧为什么每次都要在这里发完问题然后我自己想到解决方法了。。。。
再自问自答一下吧:
five<-x[lapply(x,function(xx){dim(xx)[1]})>5]
嗯,就这么一句话就够了~给自己赞一个~
已有 2 人评分经验 热心指数 收起 理由
李会超 + 80 精彩帖子
ryoeng + 1 鼓励积极发帖讨论

总评分: 经验 + 80  热心指数 + 1   查看全部评分

板凳
jiangbeilu 学生认证  发表于 2016-1-7 14:50:04
3个的话,用以下的代码。有时候,自己问了问题,是把问题进行了梳理,比较容易找到问题的答案的
  1. x <- lapply(1:10,function(x) rep(x,x))
  2. x[sapply(x,function(x) length(x)>3)]
复制代码
已有 1 人评分论坛币 收起 理由
李会超 + 20 精彩帖子

总评分: 论坛币 + 20   查看全部评分

报纸
ntsean 发表于 2016-1-7 20:02:26
jiangbeilu 发表于 2016-1-7 14:50
3个的话,用以下的代码。有时候,自己问了问题,是把问题进行了梳理,比较容易找到问题的答案的
更简洁些
x[sapply(x, length)>3]

地板
水舞者 发表于 2016-3-4 10:46:43
ntsean 发表于 2016-1-7 20:02
更简洁些
x[sapply(x, length)>3]
好顶赞&#128077;&#128077;&#128077;

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

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