【发布时间】:2019-09-20 23:13:11
【问题描述】:
我有 3 个数据框、坐标、anno 和转换。
coords 包含坐标列表和每个位置的 ID 代码。有些位置有多个坐标。
row 36381: NW_003566036.1, 1244298
row 36390: NW_003566036.1, 1317973
row 36396: NW_003566036.1, 1430739
anno包含另一种形式的坐标数据,ID也是另一种形式。
row 1: CM001169.1, gene, 1965676, LOC100649911
row 3: CM001170.1, gene, 1491294, LOC100647500
转换是不同 ID 代码从一个到另一个的 1:1 映射。
row 1: NC_015762.1, CM001169.1
row 2: NC_015763.1, CM001170.1
我想输出一个新的数据框,用 anno 中使用的 ID 代码替换 coords 中使用的 ID 代码,但是,手动执行此操作将是可怕的,因为有超过 5000 个位置。它们的顺序不同,convert 中的一些 ID 不存在于 coords 或 anno 中。
我尝试使用 recode() ,但重复 5000 多个实例似乎不切实际。我还尝试了 plyr 包中的 mapvalues,但它强烈反对我关于可接受的输出是什么。
例如:
output <- data.frame(mapvalues(coords$ID, from = convert$`old ID`,
to = convert$`new ID`))
抽出一个空表/向量/东西。
我收到以下错误:
Error in mapvalues(coords, from = convert$`old code`, to = convert$`new code`) :
`x` must be an atomic vector.
使用此代码:
output <- mapvalues(coords, from = convert$`old ID`, to = convert$`new ID`)
【问题讨论】:
-
这是良好样本数据的开始,但要使答案真正可测试,我们需要包含实际匹配的样本数据。更好的是,如果样本数据是我可以复制和使用的东西,例如:
dput(head(x))的输出,或data.frame(...)的编程定义; tertiary 是框架的控制台输出(至少是相关列),但是当任何字段中有空格或类中存在歧义时(POSIXt、factor/character等),最后一个选项会变得有点问题.