R 两个列表之间的重采样重叠
我有两个.txt文件。这两个文件都是字符串列表,每行一个字符串R 两个列表之间的重采样重叠,r,random,overlap,resampling,R,Random,Overlap,Resampling,我有两个.txt文件。这两个文件都是字符串列表,每行一个字符串 GRIM1 PHOXA2 SLITRK4 两个文本文件都有约20000行长。我想从文件1中随机抽取500个字符串,从文件2中随机抽取700个字符串。 然后我想计算两个子集重叠的字符串数。 然后我想重复这个过程100次,并计算100次重采样中重叠这些子集的最小、最大和平均字符串数 我试图修改一些用于类似任务的代码,但出现了一个错误: sample.int(长度(x)、大小、替换、prob)中存在错误: 当“replace=FALSE
GRIM1
PHOXA2
SLITRK4
两个文本文件都有约20000行长。我想从文件1中随机抽取500个字符串,从文件2中随机抽取700个字符串。
然后我想计算两个子集重叠的字符串数。然后我想重复这个过程100次,并计算100次重采样中重叠这些子集的最小、最大和平均字符串数 我试图修改一些用于类似任务的代码,但出现了一个错误: sample.int(长度(x)、大小、替换、prob)中存在错误: 当“replace=FALSE”时,无法获取大于总体的样本 该代码是:
listA <- read.csv(file="file1.txt", header=F)
listB <- read.csv(file="file2.txt", header=F)
listA <- as.character(listA) # to check that you really have a vector of gene names #maybe you have to do: listA <- as.character(listA)
listB <- as.character(listB)
res <- rep(NA, 100)
genesToDraw <- 500 # how many to select
genesToDraw2 <- 700 # if you want to take different number from second list
for(i in 1:length(res)){
drawA <- sample(x=listA, size=genesToDraw, replace=FALSE)
drawB <- sample(x=listB, size=genesToDraw2, replace=FALSE) # or size=genesToDraw2
res[i] <- length(intersect(drawA, drawB))
}
hist(res, breaks=20)
table(res)
max(res)
sum(res > 5) # how often i
致以最良好的祝愿
Rubal正如我们所讨论的,首先,因为您需要字符串,所以在read.csv调用中将stringsAsFactors标志设置为false,这样您就不会弄乱因子
listA <- read.csv(file="file1.txt", header=FALSE, stringsAsFactors=FALSE)
listB <- read.csv(file="file2.txt", header=FALSE, stringsAsFactors=FALSE)
listAlength(listA)
和length(listB)
的输出是什么?检查listA和listB的类别。sample的第一个参数需要是一个向量或整数,这里很可能是一个数据帧。错误是x中的项目数小于您要采集的样本数,当replace=false类为字符时,不允许这样做。是列表长度为1。一定是这样。所以我应该把它们转换成向量?如果我将它们转换为整数,我将如何检查重叠,整数不代表它们的行号而不是字符串本身吗?@user964689在as.character调用之后,您能运行dput(listA)和dput(listB)并将这些结果发布到您的问题中吗?
listA <- read.csv(file="file1.txt", header=FALSE, stringsAsFactors=FALSE)
listB <- read.csv(file="file2.txt", header=FALSE, stringsAsFactors=FALSE)
listA<-listA[,1]
listB<-listB[,1]