楼主: 万人往LVR
1795 5

[问答] 如何对列表快速计算 [推广有奖]

  • 1关注
  • 13粉丝

已卖:2份资源

副教授

82%

还不是VIP/贵宾

-

威望
0
论坛币
5127 个
通用积分
816.2492
学术水平
70 点
热心指数
112 点
信用等级
40 点
经验
9088 点
帖子
625
精华
0
在线时间
1182 小时
注册时间
2013-7-18
最后登录
2024-6-25

楼主
万人往LVR 在职认证  发表于 2015-11-30 16:34:47 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
例如temp <- list();
temp[[1]] <- c(1,2,3);
temp[[2]] <- c(5,6);
temp[[3]] <- c(2,3,4,5,6)
如何用比for循环快的方式求每个单元内的和,即返回 6,11,20



二维码

扫码加我 拉你入群

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

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

关键词:Temp TEM 如何

本帖被以下文库推荐

沙发
icyjunjin 发表于 2015-11-30 16:39:03
。。。。。。

藤椅
jiangbeilu 学生认证  发表于 2015-11-30 16:40:27
用lapply或者sapply系列,速度上可能快不了多少,但是代码简洁:

  1. zz=list(x1=1:3,x2=4:5,x3=7:10)
  2. zz
  3. sapply(zz,sum)
复制代码

板凳
万人往LVR 在职认证  发表于 2015-11-30 16:54:11
jiangbeilu 发表于 2015-11-30 16:40
用lapply或者sapply系列,速度上可能快不了多少,但是代码简洁:
多谢,一直以为sapply不能用于lsit

报纸
jiangbeilu 学生认证  发表于 2015-11-30 16:58:43
万人往LVR 发表于 2015-11-30 16:54
多谢,一直以为sapply不能用于lsit
sapply是对结果输出的一个简化,simplify的意思。如果能用数据框显示,sapply就会整理成data frame的,如果太复杂,就会返回list结构,与lapply相同。

地板
suimong 发表于 2015-12-11 14:21:05
给个量化的结果,可以参考一下:
  1. LSspdtest <- list(rbinom(100,100,0.2),
  2.                   rbinom(100,100,0.3),
  3.                   rbinom(100,100,0.4))

  4. f1_loop <- function(x) {
  5.   result <- c()
  6.   for (i in seq_along(x)) {
  7.     result <- c(result, sum(x[[i]]))
  8.   }
  9.   result
  10. }
  11. f2_lapply <- function(x) {
  12.   lapply(x, sum)
  13. }

  14. f3_sapply <- function(x) {
  15.   sapply(x,sum)
  16. }

  17. library(microbenchmark)
  18. microbenchmark(f1_loop(LSspdtest),
  19.                f2_lapply(LSspdtest),
  20.                f3_sapply(LSspdtest),
  21.                times=1000L)
复制代码


在我机器上运行的结果是:
  1. Unit: microseconds
  2.                  expr    min     lq      mean median     uq    max neval
  3.    f1_loop(LSspdtest)  2.994  3.422  4.306254  3.849  3.850 24.377  1000
  4. f2_lapply(LSspdtest)  2.566  3.421  4.199767  3.422  3.850 40.627  1000
  5. f3_sapply(LSspdtest) 11.119 12.403 15.139950 12.831 14.113 54.740  1000
复制代码

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

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