r语言 - 将具有 2 个参数的函数应用于 df 的每个重复值



我有一个数据帧,其列基因具有重复的值。我想对每组重复值应用一个函数,该函数将列 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. 

最新更新