2017-02-16 94 views
1

这似乎很简单,我几次搜索后都找不到答案,但我不知道自己做错了什么。具体而言,我想知道MARGIN论据是否应该允许我检查与duplicated重复的列。如何将复制函数应用于数据帧的列

这是可以编码:

dim(b) 
    [1] 59 130 
duplicated(b, MARGIN = 2) 
    [1] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE 
    [14] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE 
    [27] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE 
    [40] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE 
    [53] FALSE FALSE FALSE FALSE FALSE FALSE FALSE 
duplicated(b, MARGIN = 1) 
    [1] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE 
    [14] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE 
    [27] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE 
    [40] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE 
    [53] FALSE FALSE FALSE FALSE FALSE FALSE FALSE 

从1改变到MARGIN 2没有影响,每次我得到59分的结果为59点的行。我正在寻找最简单的方法来删除重复的列,并遇到了duplicated。我认为重复应该工作,因为在文档中它提到了保证金参数MARGIN the array margin to be held fixed: a single integer.但显然我还不明白。

请详细说明,谢谢。

回答

2

MARGIN参数仅适用于duplicated()的数组方法,而不适用于数据框方法。但是您可以使用

b[!duplicated(c(b))] 

删除数据框的重复列。 c()用于删除“data.frame”类,将b转换为列表。 duplicated()的默认方法在列表上工作。有关更多信息,请参见help(duplicated)

相关问题