В dfs, содержащих результаты дифференциально экспрессированных белков, я хотел бы отметить, какие белки превышают определенные пороги значимости (например, logFC> 1 & p <0,05 как up_0.05 или p <0.01 как up_0.01).Используя ifelse, я могу сделать это для каждого df отдельно, но было бы намного чётче иметь функцию, так как у меня много dfs для обработки таким образом. </p>
Был задан похожий вопрос ( dplyr - mutate: используйте имена динамических переменных ), но я не смог перевести это в решение моей проблемы, поэтому я был бы очень признателен, если бы вы могли исправить мой код функций для работы (пример данных предоставлен)
Спасибомного!
пример данных
p.vals <- seq(from=0, to=1, by=.0001)
logFCs <- seq(from=0, to=4, by=.1)
diffEx_proteins <- data.frame(protein=LETTERS[1:1000],
adj.P.Val=sample(p.vals, size=1000, replace=TRUE),
logFC=sample(logFCs, size=1000, replace=TRUE))
функция
mark_significants <- function(comparison){
comparison$paste0(comparison, "up_0.05") <- ifelse(comparison$adj.P.Val <= 0.05 & comparison$logFC >= 1, TRUE, FALSE)
comparison$paste0(comparison, "down_0.05") <- ifelse(comparison$adj.P.Val <= 0.05 & comparison$logFC <= -1, TRUE, FALSE)
comparison$paste0(comparison, "up_0.01") <- ifelse(comparison$adj.P.Val <= 0.01 & comparison$logFC >= 1, TRUE, FALSE)
comparison$paste0(comparison, "down_0.01") <- ifelse(comparison$adj.P.Val <= 0.01 & comparison$logFC <= -1, TRUE, FALSE)
}
использование
mark_significants(diffEx_proteins)
Я получаю ошибку «Ошибка в mark_significants (diffEx_proteins»)): недопустимая функция в сложном назначении "
Я хотел бы получить df с 4 добавленными логическими столбцами, указывающими, достигают ли более влажные белки заданные пороговые уровни.