use*_*101 19 r vector divide dataframe
我试图将数据框中的每个数字除以16列,每列的特定数字.数字被存储为数据帧,其中1-16对应于较大数据帧列1-16中的样本.每列只有一个数字,我需要在较大的电子表格中除以每个数字,然后将输出打印到最终的电子表格中.
这是我开始时的例子.要分割的电子表格.
X131.478.1 X131.478.2 X131.NSC.1 X131.NSC.2 X166.478.1 X166.478.2
1/2-SBSRNA4 4 2 2 6 7 6
A1BG 93 73 88 86 58 65
A1BG-AS1 123 103 96 128 46 57
Run Code Online (Sandbox Code Playgroud)
用于划分电子表格的数字
X131.478.1 1.0660880
X131.478.2 0.9104053
X131.NSC.1 0.8642545
X131.NSC.2 0.9611866
X166.478.1 0.9711406
X166.478.2 1.0560121
Run Code Online (Sandbox Code Playgroud)
而预期的结果,不一定像我在这里所做的那样.
X131.478.1 X131.478.2 X131.NSC.1 X131.NSC.2 X166.478.1 X166.478.2
1/2-SBSRNA4 3.75 2.19 2.31 6.24 7.20 5.68
A1BG 87.23 80.17 101.82 89.47 59.72 61.55
A1BG-AS1 115.37 113.13 111.07 133.16 47.36 53.97
Run Code Online (Sandbox Code Playgroud)
我尝试简单地将数据帧mx2 = mx/sf除以mx为大数据集,sf为要除数的数据帧.这似乎将所有内容除以sf数据集中的第一个数字.
划分的数字由estimateSizeFactors生成,如果有帮助的话,它是DESeq包的一部分.
任何帮助都会很棒.谢谢!
Rei*_*son 37
sweep对这些类型的操作很有用.例如,一些虚拟数据,我们将矩阵各列中的每个元素除以mat向量中的相应值vec:
mat <- matrix(1:25, ncol = 5)
vec <- seq(2, by = 2, length = 5)
sweep(mat, 2, vec, `/`)
Run Code Online (Sandbox Code Playgroud)
在使用中我们有:
> mat
[,1] [,2] [,3] [,4] [,5]
[1,] 1 6 11 16 21
[2,] 2 7 12 17 22
[3,] 3 8 13 18 23
[4,] 4 9 14 19 24
[5,] 5 10 15 20 25
> vec
[1] 2 4 6 8 10
> sweep(mat, 2, vec, `/`)
[,1] [,2] [,3] [,4] [,5]
[1,] 0.5 1.50 1.833333 2.000 2.1
[2,] 1.0 1.75 2.000000 2.125 2.2
[3,] 1.5 2.00 2.166667 2.250 2.3
[4,] 2.0 2.25 2.333333 2.375 2.4
[5,] 2.5 2.50 2.500000 2.500 2.5
> mat[,1] / vec[1]
[1] 0.5 1.0 1.5 2.0 2.5
Run Code Online (Sandbox Code Playgroud)
小智 6
假设我们有一个数据框df:
> df
a b c
1 1 3 100
2 2 4 110
Run Code Online (Sandbox Code Playgroud)
我们想用相同的向量划分每一行vec:
> vec <- df[1,]
> vec
a b c
1 1 3 100
Run Code Online (Sandbox Code Playgroud)
那么我们可以mapply如下使用:
> mapply('/', df, vec)
a b c
[1,] 1 1.000000 1.0
[2,] 2 1.333333 1.1
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
20820 次 |
| 最近记录: |