For future questions, please print the result of dput(fdr). This will make it a bit easier for others to answer.
Consider using the formattable package.
formattable(df, list(
pi = formatter("span", style = x ~ ifelse(x < 0.05, style(color = "red", font.weight = "bold"), NA)),
pd = formatter("span", style = x ~ ifelse(x < 0.05, style(color = "red", font.weight = "bold"), NA)),
aa = formatter("span", style = x ~ ifelse(x < 0.05, style(color = "red", font.weight = "bold"), NA)),
ef = formatter("span", style = x ~ ifelse(x < 0.05, style(color = "red", font.weight = "bold"), NA))
))
Result looks like:

This doesn't fully achieve what you want (in terms of coloring the cells). But it seems that you were trying to highlight specific cases (<0.05) and this definitely captures that.