Я видел сообщения, показывающие, как использовать apply, sapply, dplyr, plyr и т. Д. Для запуска функции в каждой строке матрицы.Тем не менее, я изо всех сил пытаюсь создать R-скрипт, который позволит мне запустить функцию, которая будет обрабатывать каждую строку как входные данные.Вот некоторые примеры данных:
> ` Time.course..| timecourse1 | X | X.1 | X.2| X.3 | X.4 | X.5 | X.6 | X.7
1 YORF | 0 | 5.000 |10.000| 15.000 | 20 30.000 |40.000 | 50.000 | 60.000
2 YAL026C |1| 0.7030321 | NA | NA | NA | 0.7130882 | 0.3322182 | 0.2153255 | 0.2264951
Может быть трудно сказать, но по сути у меня есть временной ряд в моем первом ряду от 0 до 60 и соответствующие уровни экспрессии для некоторых генов 6000+.У меня есть функция для расчета периода полураспада, но мне нужно зациклить ее по всему фрейму данных с входными данными, являющимися каждой строкой в течение одних и тех же значений времени.
Вот что я смог сделать для одной строкипосле преобразования кадра данных x в матрицу:
`> y <- x[1,]
> time <- c(0,5,10,15,20,30,40,50,60)
> result <- pk.calc.half.life(conc = y, time = time)
> print(result$half.life)
[1] 17.89096`
Но мне нужен быстрый эффективный способ выполнить это для каждой строки и сохранить это значение в новом столбце в моем исходном кадре данных.Функции sapply и lapply не сработали, что привело к ошибке, что conc и time должны быть одинаковой длины.
> sapply(x, pk.calc.half.life(x, time = time))
Error in check.conc.time(conc, time) :
Conc and time must be the same length
In addition: Warning message:
In check.conc.time(conc, time) : Negative concentrations found
> lapply(x, pk.calc.half.life(x, time = time))
Error in check.conc.time(conc, time) :
Conc and time must be the same length
In addition: Warning message:
In check.conc.time(conc, time) : Negative concentrations found