假设我们有以下内容:
c("A", "A", "B") %>%
cbind(1:3) %>%
data.frame() -> testdf
我们要从数据框中删除第一个变量中存在重复项的所有实例。通常我们会使用这样的东西:
testdf2 <- testdf[!duplicated(testdf$.),]
但是,testdf2
看起来像这样:
. V2
A 1
B 3
这不是我想要的-因为值A被重复,所以我想删除所有在第一个变量中具有A的情况。我希望我的输出像这样:
. V2
B 3
有一个函数可以产生这个吗?
答案 0 :(得分:6)
尝试testdf[!duplicated(testdf$.)&!duplicated(testdf$.,fromLast = TRUE),]
答案 1 :(得分:3)
另一个library(shiny)
js <- '
$(document).on("shiny:connected", function(){
alert("Loaded");
Shiny.setInputValue("loaded", 1);
Shiny.addCustomMessageHandler("focus", function(x){
$("#select ~ .selectize-control > .selectize-input").click();
});
});
'
ui <- fluidPage(
tags$head(tags$script(HTML(js))),
headerPanel("Focus", windowTitle = "Focus"),
fluidRow(
column(width = 2, class = "panel",
selectInput("select", label = "Your Choice",
choices = c("Choice 1", "Choice 2"), selectize = TRUE),
actionButton("click", "Click")
),
column(width = 10,
textOutput("text")
)
)
)
server = function(input, output, session) {
observeEvent(input$loaded, {
session$sendCustomMessage("focus", list(NULL))
print("Loaded")
})
observeEvent(input$select, {
print("Selected")
})
observeEvent(input$click, {
session$sendCustomMessage("focus", list(NULL))
print("Clicked")
})
output$text <- renderText({
})
}
shinyApp(ui = ui, server = server)
替代名称(保留行名):
base
答案 2 :(得分:2)
如果要坚持使用管道
testdf %>% group_by(testdf$.) %>% summarise(num_x=n()) %>% filter(num_x==1)
答案 3 :(得分:1)
我们可以将subset
与table
一起使用
subset(testdf, `.` %in% names(which(table(`.`) == 1)))
# . V2
#3 B 3