我的数据框看起来像:
df <- read.table(text="chr pos Ref Alt D045313 D045314 D045135 D045136 D045137 D045138
Chr1 1462191 T C 1/1 0/1 1/1 0/0 1/1 1/1
Chr1 1463534 G C 0/0 1/1 0/0 0/1 0/0 0/0
Chr1 1463881 T A 0/1 0/0 1/1 0/0 1/1 1/1
Chr1 1464091 G A 0/0 0/0 1/1 0/0 1/1 1/1
Chr1 1464651 T C 1/1 0/0 1/1 0/1 1/1 1/1",head=F, stringsAsFactors=F)
Run Code Online (Sandbox Code Playgroud)
预期结果:
chr pos Ref Alt D045313 D045314 D045135 D045136 D045137 D045138
Chr1 1462191 T C C/C …Run Code Online (Sandbox Code Playgroud) 我有一个数据框:
DF = read.table(text="S01 S02 S03 S04 S05 S06
TT CC TT CT TT 00
AC AA AC CC AA AA
CC TC CC TT CC 00
CC AC CC AC AA CC
GG 00 TG TT GG TG
GG GA GG GA GG GG", header=T, stringsAsFactors=F)
Run Code Online (Sandbox Code Playgroud)
我想以更快的方式将所有异构值(双字母)更改为双倍"00".预期结果:
S01 S02 S03 S04 S05 S06
TT CC TT 00 TT 00
00 AA 00 CC AA AA
CC 00 CC TT CC 00
CC 00 CC 00 AA CC
GG 00 …Run Code Online (Sandbox Code Playgroud) 我有一个这样的数据框:
df = read.table(text="IDX D1 D2 D3 D4 D5 D6 D7
F 0/0 1/1 0/0 0/1 1/1 0/0 0/0
F 1/1 0/0 0/0 0/0 0/0 1/1 0/0
T 0/0 0/0 0/0 0/0 0/0 0/0 0/0
T 0/1 0/1 0/0 1/1 0/1 0/0 0/1
F 1/1 0/1 1/1 0/0 0/1 0/0 0/0", header=T, stringsAsFactors=F)
Run Code Online (Sandbox Code Playgroud)
如果是,我想交换0和1之间的字符 df$IDX==F
预期结果:
IDX D1 D2 D3 D4 D5 D6 D7
F 1/1 0/0 1/1 1/0 0/0 1/1 1/1
F 0/0 1/1 1/1 1/1 1/1 0/0 1/1 …Run Code Online (Sandbox Code Playgroud) 我有两个具有相同向量但长度不同的列表
list1 <- list(a = 1:10, b = 3:20)
list2 <- list(a = c(2,5,8), b = c(3,5,11,20))
Run Code Online (Sandbox Code Playgroud)
我想从每个向量中找到list1不存在于相应向量中的元素list2.对于其他脚本而不是R.回答了类似的问题.
我希望最终的名单是
lst <- list(a=c(1,3,4,6,7,9,10),b=c(4,6:10,12:19))
Run Code Online (Sandbox Code Playgroud)
谢谢你的帮助.
我有一个数据框M.我想提取每个字符串分隔的第一部分":".我使用strsplit但结果是一个大字符而不是数据框.有人可以帮忙吗?
M <- read.table(text=
"1/1:205,54,0:18:0:57 1/1:141,39,0:13:0:42 0/0:0,54,255:18:0:45 1/1:174,48,0:16:0:51 0/0:0,84,255:28:0:75
0/0:0,78,255:26:0:99 0/0:0,63,255:21:0:86 0/0:0,45,255:15:0:68 0/0:0,48,255:16:0:71 0/0:0,132,255:44:0:99
0/0:0,78,255:26:0:89 0/0:0,78,255:26:0:89 0/0:0,36,255:12:0:47 0/0:0,33,255:11:0:44 0/0:0,108,255:36:0:99
0/0:0,75,255:25:0:99 0/0:0,54,255:18:0:78 0/0:0,69,255:23:0:93 0/0:0,33,255:11:0:57 0/0:0,96,255:32:0:99
0/0:0,60,75:21:0:74 0/0:0,51,84:17:0:65 0/0:0,48,64:17:0:62 0/0:0,42,65:15:0:56 0/0:0,84,99:28:0:98 ",
head=F, stringsAsFactors=F)
S <- sapply(strsplit(M, ":"), "[", 1)
Run Code Online (Sandbox Code Playgroud) 我有一个数据帧df1:
df1 <- read.table(text=" Chr06 79641
Chr06 82862
Chr06 387314
Chr06 656098
Chr06 678491
Chr06 1018696", header=FALSE, stringsAsFactors=FALSE)
Run Code Online (Sandbox Code Playgroud)
我想检查df1中的每一行是否包含在df2的范围内.df2中的column2是范围的开头,column3是范围的结尾.范围之间没有重叠(行之间).df2中的数据按Column1和column2排序.我为此写了一个循环,但我对此并不满意,因为如果我在df1中有几千行,它会运行很长时间.我想找到一种更有效的方法来完成这项工作(更好的没有循环).谢谢.df2数据框:
df2 <- read.table(text=" Chr05 799 870
Chr06 77914 77942
Chr06 78233 78269
Chr06 78719 78836
Chr06 79720 87043
Chr06 87223 87305
Chr06 380020 380060
Chr06 387314 387371
Chr06 654907 654988
Chr06 657929 658057
Chr06 677198 677229
Chr06 679555 680170
Chr06 1015425 1015475
Chr06 1018676 1018736
Chr06 1020564 1020592", header=FALSE, stringsAsFactors=FALSE)
Run Code Online (Sandbox Code Playgroud)
我的剧本:
df1$V3 <- FALSE
for (i in 1:dim(df1)[1]) {
for (j …Run Code Online (Sandbox Code Playgroud) 我有一个矢量看起来像:
SNP <- c("A/G","A/C","A/C","T/C","A/G","A/C","T/G","T/C","A/C","T/G")
Run Code Online (Sandbox Code Playgroud)
第二个向量(REF)是"SNP"中每个元素的两个字母之一的向量:
REF <- c("G","C","A","C","A","A","T","T","C","T")
Run Code Online (Sandbox Code Playgroud)
如果匹配向量"REF"中的相应元素(字母),我想在前面的向量"SNP"中放置每个元素的任何字母.预期的结果是:
SNP <- c("G/A","C/A","A/C","C/T","A/G","A/C","T/G","T/C","C/A","T/G")
Run Code Online (Sandbox Code Playgroud) 我有一个数据框:
df = read.table(text="ID location C1 C2 C3 C4 C5 C6
M01 1 A H H A A B
M02 2 A H A A A B
M03 3 A B A A A B
M04 4 H B H A A B
M05 5 H B H A A B
M06 6 A B H A A H
M07 7 A B H B A H
M08 8 A B H A A H
M09 9 A B H …Run Code Online (Sandbox Code Playgroud) 我有一个200列的数据框.我想找到第6列到每行最后一列的nchar的最大值.
CHROM POS REF RANK HETERO_COUNT sample1 sample2 sample3 sample4 sample5
Chr20 84 C Rank4 12 C/C C/C C/A C/C C/C
Chr20 102 TAA Rank4 8 TAA/TAA TAA/TAA TAA/TA TAA/TAA TA/TA
Chr20 104 ACCCCC Rank3 21 ACCCCC/ACCCCCC ACCCCCC/ACCCCCC ACCCCC/ACCCCC ACCCCC/ACCCCC ACCCCC/ACCCCC
Chr20 109 C Rank4 67 C/T C/T -/- C/T C/C
Chr20 118 A Rank4 16 A/A C/C A/C A/A A/A
Run Code Online (Sandbox Code Playgroud)
我希望添加一个包含每行最大nchar值的列.
CHROM POS REF RANK HETERO_COUNT sample1 sample2 sample3 sample4 sample5 max
Chr20 84 C Rank4 12 C/C C/C …Run Code Online (Sandbox Code Playgroud) 我有一个数据框:
ID S01 S02 S03 S04 S05
M01 0|1 0|0 1|1 1|1 1|1
M02 0|0 0|0 0|0 1|1 1|0
M03 0|0 0|0 0|0 1|1 0|0
M04 0|1 0|1 0|1 0|0 0|1
M05 0|0 0|0 0|0 1|1 0|0
Run Code Online (Sandbox Code Playgroud)
我想互相切换"0"和"1".结果是预期的:
ID S01 S02 S03 S04 S05
M01 1|0 1|1 0|0 0|0 0|0
M02 1|1 1|1 1|1 0|0 0|1
M03 1|1 1|1 1|1 0|0 1|1
M04 1|0 1|0 1|0 1|1 1|0
M05 1|1 1|1 1|1 0|0 1|1
Run Code Online (Sandbox Code Playgroud)
可以通过将"0"替换为中间值(例如"2"或其他)来完成,然后将"1"替换为"0",并将中间值替换回"1".有没有有效的方法来做到这一点?谢谢.