R 用于应用的循环,用于创建表的sappy函数

R 用于应用的循环,用于创建表的sappy函数,r,R,我有一个这样的数据框 CHR 开始位置 结束位置 SNP plink.A2 普林克A1 1. 72837488 72837558 rs7531118 C T 1. 74993592 74993592 rs1514174 T C 1. 78049140 78049140 rs17381664 C T 这里有一个选项,我们将“开始位置”、“结束位置”转换为列表列,方法是在执行行之后添加向量“v1”,然后取消最新列表列 library(dplyr) library(tidyr) df1 %>%

我有一个这样的数据框

CHR 开始位置 结束位置 SNP plink.A2 普林克A1 1. 72837488 72837558 rs7531118 C T 1. 74993592 74993592 rs1514174 T C 1. 78049140 78049140 rs17381664 C T
这里有一个选项,我们将“开始位置”、“结束位置”转换为
列表
列,方法是在执行
之后添加向量“v1”,然后
取消最新
列表列

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”来变异“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
#一个tible:33 x 6
#CHR开始位置结束位置SNP plink.A2 plink.A1
#                         
#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
#…还有23行
数据
df1
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)