样本/物种转换代码帮助

时间:2016-01-19 22:42:24

标签: r optimization matrix transformation

我正在尝试简化 R 中的任务。我有一个社区矩阵:

row.name   species1  species2 species3 species4 .... species50
sample 1      1         6        156      4              1
sample 2      0        20        34       5              1
sample 3      3         7        23       0              7
....
sample 10     3        15        9        7              6

这些是原始数字

我试图编码(但无处可去)一种方法,通过该方法,我可以将样本/行中发生率> 10%的任何物种限制为9%。即在这个(组成)的例子中,似乎sample1 / species3可能需要加盖。

我希望将数据保存为原始计数/恢复原始计数。这是否可以在 R

中实现

我已经意识到vegan中的生态变换或等同于规范化/标准化数据,但它们不是我在这里所追求的。

我希望这是有道理的。如果没有,我可以再试一次。任何帮助都非常感激,但 R 仍然相当新。

1 个答案:

答案 0 :(得分:1)

我会使用sweep(),但请指定pmin作为函数 取10%的较小值和实际值:

M <- read.table(header=TRUE, row.names = 'row.name', 
text='row.name   species1  species2 species3 species4  species50
sample_1      1         6        156      4              1
sample_2      0        20        34       5              1
sample_3      3         7        23       0              7
sample_10     3        15        9        7              6') 

M <- as.matrix(M)

sweep(M, 1, rowSums(M) %/% 10, pmin)