我有一个数据帧,其列基因具有重复的值。我想对每组重复值应用一个函数,该函数将列 baseMean 和 pvale 作为参数。 即,将"baseMean"和"pvale"中的所有值与"gene"中的相同值一起,并将它们置于函数之下。通过"基因"手动子集 df 不是一种选择,因为"基因"中有数千个不同的值。 我的第一个想法是使用:
library(lancaster) # a function taking two vectors as input
by(df, df$gene, lancaster, c(df$pvale, df$baseMean))
不幸的是,这会将向量视为函数的单个参数,删除 c(...( 并不能提供补救措施,因为最后一个参数随后被删除。 是否有其他选项可以将函数应用于"基因"列中相同的 df 值? 非常感谢!
>df
baseMean pvale gene
1: 13.538457 1.673427e-01 AT1G01020
2: 15.941034 5.639909e-01 AT1G01020
3: 12.587422 5.706964e-01 AT1G01020
4: 13.628112 6.002292e-01 AT1G01020
5: 26.003794 2.075687e-01 AT1G01020
6: 0.767917 4.298488e-01 AT1G01030
7: 129.280745 8.218158e-01 AT1G01040
8: 539.597575 9.186060e-14 AT1G01060
9: 32.214273 3.166877e-04 AT1G01060
10: 10.970998 6.589592e-02 AT1G01060
由于我不知道你想到什么函数,这是一个计算 2 个向量的简单函数(第一个向量的平均值加上第二个向量的和(的示例,然后我将其应用于具有重复Species
值的iris
数据集(类似于您的基因(
some_function <- function(x, y) {
mean(x)+sum(y)
}
iris %>%
group_by(Species) %>%
summarise(my_value = some_function(Petal.Length, Petal.Width))
输出:
A tibble: 3 x 2
Species my_value
<fct> <dbl>
1 setosa 13.8
2 versicolor 70.6
3 virginica 107.