отбрасывайте столбцы, если конкретная строка содержит заданное значение

#r

#r

Вопрос:

Я хотел бы удалить столбцы, если их четвертая строка содержит «0».

фиктивный фрейм данных:

 df lt;- data.frame(a=c(1,2,3,4,5,6), b=(c(0,1,2,0,3,4)), c=c(1,2,0,4,5,6), d=c(1,7,9,4,5,6))  

Я уже использовал это для удаления столбцов, когда какие-либо строки содержали нулевое значение :

 b lt;- df[,-grep("0", df)]  

но я не могу найти способ сделать это с определенной строкой…

Есть какие-нибудь идеи ?

Комментарии:

1. df[, -grep("0", df[4,])] ? Лучше использовать !grepl вместо -grep «хотя», чтобы вы не получили ошибку, если в 4-й строке вообще нет нулей

Ответ №1:

Это довольно простое решение.

 df[,which(df[4,]!=0)]  

Комментарии:

1. Черт, я пробовал это, но забыл добавить запятую после 4 ! Большое спасибо !

Ответ №2:

 subset(df, select=which(df[4,]!=0))