r - 将空格分隔的文本文件转换为命名向量以计算 HWE
问题描述
我正在处理文本文件和向量。
我有一个空格分隔的文本文件,格式如下:
id1 AA 44 AG 20 GG 36
id2 CC 30 CT 22 TT 48
id3 CT 60 CC 30 TT 10
...
我需要一个循环遍历每一行的代码,并将 id 放入一个变量中,并将其余值放入一个向量中。第一行对应的向量示例:
x <- id1
y <- c(AA=40,AG=20,GG=36)
编辑:我需要使用HardyWeinberg包中的HWChisq函数来排除 p 值 < 0.001 的 SNP。函数需要每个等位基因的命名计数向量。
解决方案
如果我们有备用列(假设我们通过读取.csv
文件在 R 中创建了一个对象read.csv/read.table
),然后按行拆分,asplit
不包括第一列 'id' 列,并创建一个命名向量setNames
lst1 <- Map(setNames, asplit(df1[-1][c(FALSE, TRUE)], 1),
asplit(df1[-1][c(TRUE, FALSE)], 1))
names(lst1) <- df1[[1]]
lst1$id1
# AA AG GG
# 44 20 36
数据
df1 <- structure(list(id = c("id1", "id2", "id3"), v1 = c("AA", "CC",
"AA"), v2 = c(44L, 30L, 60L), v3 = c("AG", "CT", "AG"), v4 = c(20L,
22L, 30L), v5 = c("GG", "TT", "GG"), v6 = c(36L, 48L, 10L)),
class = "data.frame", row.names = c(NA,
-3L))
推荐阅读
- javascript - 对象编程迷失了:我的构造函数是“传统的”吗?我的代码是否正确考虑在内?
- postgresql - Hasura 查询在生产 Heroku 服务器上超时,但在 Heroku 登台服务器上快如闪电
- vue.js - Socket-IO 使用 Polling 而不是 Websocket
- c++ - 一旦输入了一个合数,涉及计算素数的代码就会停止工作。C++
- python-xarray - Xarray:切片坐标返回一个空维度
- python - 使用 aws cli 或 python 从 ec2 实例中删除安全组
- postman - 如何在 Postman 中创建 SAS 令牌以与服务总线一起使用?
- javascript - Angular 7+:如何从 api 端点静默实现刷新?
- c# - C# 逻辑问题使用相同的输入进入错误的循环
- android - Android YouTube 播放器直播