У меня два фрейма данных. Один с двумя столбцами, а другой с тремя столбцами. Первый кадр данных имеет имена SNP и его позицию. Второй фрейм данных с тремя столбцами содержит столбцы с названием гена и координатами начала и конца генов. Мне интересно выполнить соединение на основе границ. Если SNP попадает в границы гена, верните его
dt_snp<-data.table("SNP"=c(paste("SNP",seq(1:10),sep="")),
"BP"=c(1100, 89200, 2500, 33000, 5500, 69500, 12000,8800, 23200, 27000 )) ## SNP data
dt_gene<-data.table("GENE"=c("GENE1","GENE2","GENE3","GENE4","GENE5"),
"START"=c(1000,2100,5000,40000,23000), "END"=c(2000,3000,9000,45000,30000)) ## Gene data
## do a join using data.table
snp_withingenes<-dt_snp[dt_gene, c("SNP","BP","GENE","START","END"), on=.(BP>=START, BP<=END), nomatch=0] # inner join
Я получаю от него желаемые результаты, однако, когда я выполняю эту задачу в сценарии R, который хранится в пакете R, я получаю предупреждение для .
оператор. Предупреждение выглядит так:
function_small: no visible global function definition for ‘.’
Undefined global functions or variables:
.
Таким образом, я хотел бы использовать foverlaps
, но мне трудно понять и достичь желаемых результатов с его помощью. Для меня это противоречит интуиции
foverlaps(dt_snp,dt_gene, by.x=c("SNP","BP"), by.y=c("GENE","START","END"), nomatch=NA, type="any")
Error in foverlaps(dt_snp, dt_gene, by.x = c("SNP", "BP"), by.y = c("GENE", :
The first 3 columns of y's key must be identical to the columns specified in by.y.
Как мне получить желаемый результат?
data.table_1.13.0
R v4.0
windows платформа
check
от devtools раздражает для оператора .
на R v4.0
rmarkdown_2.3
devtools_2.3.1
UNIX платформе