Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/101.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何创建一个新列,将不重复的字符保留在R中以前的列上?_R_Dplyr - Fatal编程技术网

如何创建一个新列,将不重复的字符保留在R中以前的列上?

如何创建一个新列,将不重复的字符保留在R中以前的列上?,r,dplyr,R,Dplyr,给定这样的数据帧: col1 col2 col3 a b b a b a a b a c d c c d d e f f col1 col2 col3 col4 a b b a a b a b a

给定这样的数据帧:

col1     col2     col3
a        b        b
a        b        a
a        b        a
c        d        c
c        d        d
e        f        f
col1     col2     col3     col4
a        b        b        a
a        b        a        b
a        b        a        b
c        d        c        d
c        d        d        c
e        f        f        e
我想创建另一个新列(我们称之为col4),其中包含每行中唯一尚未重复的值。因此,我期望的输出如下所示:

col1     col2     col3
a        b        b
a        b        a
a        b        a
c        d        c
c        d        d
e        f        f
col1     col2     col3     col4
a        b        b        a
a        b        a        b
a        b        a        b
c        d        c        d
c        d        d        c
e        f        f        e

我正试图找到一个尽可能简单的解决方案来获得这个输出,但目前我所有的尝试都没有成功。

假设只有一个元素没有重复,我们可以在行中循环,并在使用
duplicated
创建逻辑条件后获得第一个不重复的元素

df1$col4 <-  apply(df1, 1, function(x) x[!(duplicated(x)|duplicated(x, 
            fromLast = TRUE))][1])
df1$col4
#[1] "a" "b" "b" "d" "c" "e"

df1$col4假设只有一个元素没有重复,我们可以在使用
duplicated

df1$col4 <-  apply(df1, 1, function(x) x[!(duplicated(x)|duplicated(x, 
            fromLast = TRUE))][1])
df1$col4
#[1] "a" "b" "b" "d" "c" "e"
df1$col4