使用NA填充数据框行内的特定重复值

Ste*_*rdi 4 r duplicates

对于我的数据帧的每一行,我目前正在尝试选择所有重复的值等于4,以便将它们设置为"等于"NA.

我的数据框是这样的:

dat <- read.table(text = "

   1  1  1  2  2  4  4  4  
   1  2  1  1  4  4  4  4", 

header=FALSE)
Run Code Online (Sandbox Code Playgroud)

我需要获得的是:

   1  1  1  2  2  4   NA  NA
   1  2  1  1  4  NA  NA  NA 
Run Code Online (Sandbox Code Playgroud)

我找到了有关如何消除重复行或列的信息,但我真的不知道如何继续这里..非常感谢任何帮助

42-*_*42- 5

有时您会想要避免,apply因为它会破坏数据框对象的多类功能.这是一种by方法:

> do.call(rbind, by(dat, rownames(dat), 
        function(line) {line[ duplicated(unlist(line)) & line==4 ] <- NA; line} ) )
  V1 V2 V3 V4 V5 V6 V7 V8
1  1  1  1  2  2  4 NA NA
2  1  2  1  1  4 NA NA NA
Run Code Online (Sandbox Code Playgroud)