0

我是 R 新手,我有一个非常艰巨的任务想要完成。

我有两组数据框。DF1 由 810 个观测值和 4 个变量组成,DF2 由 1707 个观测值和 51 个变量组成。下面是一些例子

DF1:

Chr POS Range_Plus_10 Range_Minus_10

2 47403201 47403211 47403191

2 47403202 47403212 47403192

2 47403210 47403220 47403200

2 47403210 47403220 47403200

2 47403210 47403220 47403200

2 47403211 47403221 47403201

DF2:

染色体位置
2 47630258
2 47630263
2 47630263
2 47630269
2 47630271
2 47630275
注意:并非所有变量都显示为 df2,我对其他变量不感兴趣,但最好将其他变量保留在输出数据中。

我想要的是过滤 df2 中的所有位置,以查看这些位置是否在 df1 的范围内(在每一行的 Range_Plus_10 和 Range_Minus_10 内)。例如,df2 中的第一个位置是 47630258,我想知道这个 47630258 是否位于任何行的 df1 中的 range_plus_10 和 Range_Minus_10 中的任何一个内,所以我希望 R 给我一个输出列,其中包含 df2 中所有可能的位置可以对应到 df1 范围内的每一行。

我尝试使用非 equi 连接,但我不断收到一些错误,不知道哪里出错了。有人可以提供一个代码来获取我想要的数据,其次告诉我为什么会出现我的错误。

这是我使用的脚本:

library (data.table)

result <- df2[df1, . ("Chromosome", "Position"), on = .(Position < Range_Plus_10, Position >Range_Minus_10), by = .EACHI]

但我不断收到一条错误消息:[.data.frame(df2, df1, .("Chr", "Position", ...), on = .(Position < : 未使用的参数 (on = .(Position < Range_Plus_10, Position > Range_Minus_10), by = .EACHI)

对不起我的格式

4

0 回答 0