R语言大数据处理包:bigstatsr


本文首发于公众号:医学和生信笔记,完美观看体验请至公众号查看本文。


简介

包的作者是一位人类遗传学的博士生,需要处理的数据都是量级非常大的,但是作者非常喜欢用R语言,众所周知,R语言很慢!所以作者才开发了这个包解决自己的实际需求!

R包bigstatsr提供了大规模矩阵数据进行快速统计分析的函数。主要是使用了FBM(filebacked big matrices)和内存映射(memory-mapping)技术。

不光是生物信息学的数据,其他的类似数据都可以使用这个包进行处理哦!

注意:此包的多数算法都不能处理缺失值!

安装

# CRAN 
install.packages("bigstatsr")
# github
remotes::install_github("privefl/bigstatsr")

简单例子

library(bigstatsr)

# 创建数据
X <- FBM(5e3, 10e3, backingfile = "test")$save()

# 随机填充数据
U <- matrix(0, nrow(X), 5); U[] <- rnorm(length(U))
V <- matrix(0, ncol(X), 5); V[] <- rnorm(length(V))
NCORES <- nb_cores()

# X = U V^T + E,进行运算
big_apply(X, a.FUN = function(X, ind, U, V) {
  X[, ind] <- tcrossprod(U, V[ind, ]) + rnorm(nrow(X) * length(ind))
  NULL  
}, a.combine = 'c', ncores = NCORES, U = U, V = V)

# 查看部分值
X[1:5, 1:5]

# 分界奇异值,快速计算
obj.svd <- big_randomSVD(X, fun.scaling = big_scale(), ncores = NCORES)
plot(obj.svd)

# 结束
#unlink(paste0("test", c(".bk", ".rds")))

image-20220329211510159

计算相关系数

mat <- X[]
dim(mat) #5000行,1000列的矩阵求相关系数,运算量很大了!

system.time(corr1 <- cor(mat)) #343.36   0.22 343.57

# 快了不是一点点!
system.time(corr2 <- big_cor(X)) #24.94  2.58  2.21 

可以看到,快了不是一点点,***直接从343秒变成了2.21秒!***这还是在我的电脑更换了openblas的情况下!

其他强大的功能

除此之外,还提供了很多其他有用的函数和功能,比如联合Rcpp,一些线性模型运算,弹性网络等,还可以使用并行运算更加快速。

快速运算的重要基础就是使用了FBM,大家可以去作者的Github详细了解!


本文首发于公众号:医学和生信笔记,完美观看体验请至公众号查看本文。


智能网联汽车的安全员高级考试涉及多个方面的专业知识,包括但不限于自动驾驶技术原理、车辆传感器融合、网络安全防护以及法律法规等内容。以下是针对该主题的一些核心知识解析: ### 关于智能网联车安全员高级考试的核心内容 #### 1. 自动驾驶分级标准 国际自动机工程师学会(SAE International)定义了六个级别的自动驾驶等级,从L0到L5[^1]。其中,L3及以上级别需要安全员具备更高的应急处理能力。 #### 2. 车辆感知系统的组成与功能 智能网联车通常配备多种传感器,如激光雷达、毫米波雷达、摄像头和超声波传感器等。这些设备协同工作以实现环境感知、障碍物检测等功能[^2]。 #### 3. 数据通信与网络安全 智能网联车依赖V2X(Vehicle-to-Everything)技术进行数据交换,在此过程中需防范潜在的网络攻击风险,例如中间人攻击或恶意软件入侵[^3]。 #### 4. 法律法规要求 不同国家和地区对于无人驾驶测试及运营有着严格的规定,考生应熟悉当地交通法典中有关自动化驾驶部分的具体条款[^4]。 ```python # 示例代码:模拟简单决策逻辑 def decide_action(sensor_data): if sensor_data['obstacle'] and not sensor_data['emergency']: return 'slow_down' elif sensor_data['pedestrian_crossing']: return 'stop_and_yield' else: return 'continue_driving' example_input = {'obstacle': True, 'emergency': False, 'pedestrian_crossing': False} action = decide_action(example_input) print(f"Action to take: {action}") ``` 需要注意的是,“同学”作为特定平台上的学习资源名称,并不提供官方认证的标准答案集;建议通过正规渠道获取教材并参加培训课程来准备此类资格认证考试
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值