循环用于应用,sapply函数用于创建表



我有一个类似的数据帧

plink.A1[/tr>rs7531118CT>C>T
CHR 开始_pos 结束_pos SNP plink.A2
1 72837488 72837558
1 7499359274993592rs1514174T
1 7804914078049140rs17381664C

这里有一个选项,我们在执行rowwiseunnestlist列之后,通过添加向量"v1",将"Start_pos"、"End_pos"转换为list

library(dplyr)
library(tidyr)
df1 %>% 
rowwise %>% 
mutate(Start_pos = list(c(Start_pos, Start_pos + v1)),
End_pos = list(c(End_pos, End_pos + v1))) %>% 
unnest(c(Start_pos, End_pos))

或者另一个选项是crossing来创建组合,然后通过添加列"v1"来mutate"pos"列

df1 %>%
crossing(v1 = c(0, v1)) %>%
mutate(across(ends_with('pos'), ~ . + v1), v1 = NULL)

-输出

# A tibble: 33 x 6
#     CHR Start_pos  End_pos SNP       plink.A2 plink.A1
#   <int>     <dbl>    <dbl> <chr>     <chr>    <chr>   
# 1     1  72837488 72837558 rs7531118 C        T       
# 2     1  72837559 72837629 rs7531118 C        T       
# 3     1  72837629 72837699 rs7531118 C        T       
# 4     1  72837699 72837769 rs7531118 C        T       
# 5     1  72837769 72837839 rs7531118 C        T       
# 6     1  72837839 72837909 rs7531118 C        T       
# 7     1  72837909 72837979 rs7531118 C        T       
# 8     1  72837979 72838049 rs7531118 C        T       
# 9     1  72838049 72838119 rs7531118 C        T       
#10     1  72838119 72838189 rs7531118 C        T       
# … with 23 more rows

数据

df1 <- structure(list(CHR = c(1L, 1L, 1L), Start_pos = c(72837488L, 
74993592L, 78049140L), End_pos = c(72837558L, 74993592L, 78049140L
), SNP = c("rs7531118", "rs1514174", "rs17381664"), plink.A2 = c("C", 
"T", "C"), plink.A1 = c("T", "C", "T")), class = "data.frame", 
row.names = c(NA, 
-3L))
v1 <- c(71, 141, 211, 281, 351, 421, 491, 561, 631, 701)

最新更新