仅使用常用的row.name组合R中的data.frames

仅使用常用的row.name组合R中的data.frames,r,merge,dataframe,R,Merge,Dataframe,我有五个不同样本集的基因表达数据框架。我在每个data.set中有不同数量的行,因此只有部分重叠的row.name 现在我想要 a过滤五个data.frames,仅包含所有data.frames中存在的基因;和 b将这些基因的基因表达数据合并到一个数据框中 到目前为止,我只能找到merge,但它只能合并两个data.frames,所以我不得不多次使用它。有更简单的方法吗?查看中最上面的答案。只需列出数据帧并应用以下代码行: Reduce(function(...) merge(..., by =

我有五个不同样本集的基因表达数据框架。我在每个data.set中有不同数量的行,因此只有部分重叠的row.name

现在我想要 a过滤五个data.frames,仅包含所有data.frames中存在的基因;和 b将这些基因的基因表达数据合并到一个数据框中


到目前为止,我只能找到merge,但它只能合并两个data.frames,所以我不得不多次使用它。有更简单的方法吗?

查看中最上面的答案。只需列出数据帧并应用以下代码行:

Reduce(function(...) merge(..., by = "x"), list.of.dataframes)

您只需调整by参数,以指定合并数据帧的公共列。

查看中最上面的答案。只需列出数据帧并应用以下代码行:

Reduce(function(...) merge(..., by = "x"), list.of.dataframes)

您只需调整by参数以指定合并数据帧的公共列。

如果要排除每个数据帧中不存在的行名称,则合并不是非常有效。这里有一个不同的建议

首先,三个示例数据帧:

df1 <- data.frame(a = 1:5, b = 1:5, 
                  row.names = letters[1:5]) # letters a to e
df2 <- data.frame(a = 1:5, b = 1:5, 
                  row.names = letters[3:7]) # letters c to g
df3 <- data.frame(a = 1:5, b = 1:5, 
                  row.names = letters[c(1,2,3,5,7)]) # letters a, b, c, e, and g
# row names being present in all data frames: c and e
另外,如果要保留所有数据帧中的对应行,可以使用以下命令替换最后一步df1[idx,]:

do.call(rbind, lapply(dfList, "[", idx, ))

如果要排除每个数据帧中不存在的行名称,则合并不是非常有效。这里有一个不同的建议

首先,三个示例数据帧:

df1 <- data.frame(a = 1:5, b = 1:5, 
                  row.names = letters[1:5]) # letters a to e
df2 <- data.frame(a = 1:5, b = 1:5, 
                  row.names = letters[3:7]) # letters c to g
df3 <- data.frame(a = 1:5, b = 1:5, 
                  row.names = letters[c(1,2,3,5,7)]) # letters a, b, c, e, and g
# row names being present in all data frames: c and e
另外,如果要保留所有数据帧中的对应行,可以使用以下命令替换最后一步df1[idx,]:

do.call(rbind, lapply(dfList, "[", idx, ))

数据帧之间的数据是否存在差异?换句话说,您希望获得五行还是每个唯一行名称一行?我希望每个唯一行名称一行,但多个列每个示例一列。数据帧之间的数据是否存在差异?换言之,您希望获得五行还是每个唯一行名称一行?我希望每个唯一行名称一行,但多个列每个示例一行。恐怕这不是那么容易。“合并”将创建一个具有行名称的新列,当尝试添加下一个data.frame时,会对此进行投诉。1:在merge.data.frame…,by=0:列名“Row.names”在结果中重复2:在merge.data.frame…,by=0:列名“Row.names”,“Row.names”在结果中重复3:在merge.data.frame…,by=0:列名“Row.names”,“Row.names”,“行名称”在结果中重复。如何导入数据?也许您可以跳过设置row.names,这将导致一个额外的列包含这些以前的行名。我想应该可以了!很好的尝试,但是没有。Warnmeldungen:1:In merge.data.frame…,by=0:column names'Row.names.x','Row.names.y'在结果中重复2:In merge.data.frame…,by=0:column names'Row.names.x','Row.names.y','Row.names.y'在结果3:In merge.data.frame。。。,by=0:列名“Row.names.x”、“Row.names.x”、“Row.names.x”、“Row.names.y”、“Row.names.y”、“Row.names.y”在resultAh中重复,只是对其进行了测试。当试图合并两个以上的数据帧时,将Reduce与merge结合使用似乎揭示了一些严重的弱点。对不起,大便发生了-没问题,斯文·霍恩斯坦有一个很好的建议,效果很好。我们学到了一些新东西-恐怕没那么容易。“合并”将创建一个具有行名称的新列,当尝试添加下一个data.frame时,会对此进行投诉。1:在merge.data.frame…,by=0:列名“Row.names”在结果中重复2:在merge.data.frame…,by=0:列名“Row.names”,“Row.names”在结果中重复3:在merge.data.frame…,by=0:列名“Row.names”,“Row.names”,“行名称”在结果中重复。如何导入数据?也许您可以跳过设置row.names,这将导致一个额外的列包含这些以前的行名。我想应该可以了!很好的尝试,但是没有。Warnmeldungen:1:In merge.data.frame…,by=0:column names'Row.names.x','Row.names.y'在结果中重复2:In merge.data.frame…,by=0:column names'Row.names.x','Row.names.y','Row.names.y'在结果3:In merge.data.frame。。。,by=0:列名“Row.names.x”、“Row.names.x”、“Row.names.x”、“Row.names.y”、“Row.names.y”、“Row.names.y”在resultAh中重复,只是对其进行了测试。当试图合并两个以上的数据帧时,将Reduce与merge结合使用似乎揭示了一些严重的弱点。对不起,大便发生了-没问题,斯文·霍恩斯坦有一个很好的建议,效果很好。我们学到了一些新东西-酷,这很简单
而且效率很高。正是我想要的-酷,这很简单,也很有效。正是我想要的-