When the condition in a subsetting assignment is entirely FALSE, this expression results in a column of NAs for a data frame, and no additional column for a tibble.
For a data frame:
df <- data.frame(a=1:3)
df[df$a < 0, "b"] <- 1
For a tibble:
tbl <- tibble(a=1:3)
tbl[tbl$a < 0, "b"] <- 1
# A tibble: 3 x 1
a
<int>
1 1
2 2
3 3
Is this intended behaviour?