Я хочу отфильтровать группу кадров данных, сначала с помощью p.value, а затем разделить ее на две на значение t.Зацикливание нескольких кадров данных с использованием R
Вот как я делаю это только для одного кадра данных.
p.value.cut <- which(top_Na1$P.Value < 0.05)
top_Na1 <- top_Na1[p.value.cut,]
up <- which(top_Na1$t > 0)
down <- which(top_Na1$t < 0)
up.p.value <- top_Na1[up,]
down.p.value <- top_Na1[down,]
Всякий раз, когда я пытаюсь повторить это с помощью цикла для или apply
, sapply
, lapply
я заканчиваю применение изменений ко всем столбцам или не в состоянии работать с соответствующей колонкой (это выглядит как цикл не использует весь кадр данных, но он идет по столбцу по столбцу), или я просто теряю имена строк фрейма данных (например, с некоторыми apply
).
Вот как выглядит один из кадров данных (все одинаковы).
logFC t P.Value adj.P.Val B
YMR290C -0.1952028 -4.593506 0.003484478 0.03596870 -1.602151
YBR090C -0.3406244 -4.373073 0.004429437 0.03930581 -1.857238
YPL037C -0.8737048 -4.088782 0.006100105 0.04526780 -2.197584
YGL035C -0.3058778 -3.839335 0.008159371 0.05142077 -2.506721
Вы не указали код, который вы пытались применить на всех ваших кадрах данных. Обычно хорошим способом применения одного и того же кода в наборе данных является сохранение их в списке, например. 'l <- list (df1, df2, df3)', а затем примените вашу функцию обработки к списку с помощью 'lapply (l, process)'. – josliber
@ biorunner88 Я бы также предложил читать все data.frames в список, а не создавать отдельные объекты data.frame. то есть. 'files <- list.files(); lst <- lapply (файлы, read.table, header = TRUE) '. Тогда попробуйте, как предположил Josiber – akrun