我需要将data.frame
中的每一列乘以第一列(classfactor)中的值。
这是我的data.frame
sample classfactor 01.BA.V 01.BA.VG 01.BO.VG 01.PR.O 01.TO.VG 02.BA.O 02.BA.V
AB 0.730 0.000000000 0.000000000 0.000000000 0.000000000 0.000000000 0 0.00000000
AC 0.730 0.000000000 0.000000000 0.000000000 0.000000000 0.000000000 0 0.00000000
AB 0.002 0.000000000 0.000000000 0.000749929 0.000000000 0.000000000 0 0.00000000
CC 0.730 0.081599145 0.093453018 0.031247022 0.015987076 0.036212483 0 0.02537884
BB 0.730 0.000000000 0.000000000 0.000000000 0.000000000 0.000000000 0 0.00000000
AA 0.730 0.001533075 0.000108666 0.000000000 0.000364526 0.000241417 0 0.00006340
它有146行和155列。
我无法弄清楚该怎么做。有什么建议吗?
答案 0 :(得分:7)
如果我没弄错的话,你可以做到
df[-(1:2)] <- df[["classfactor"]] * df[-(1:2)]
其中df
是您的数据框,第一列是sample
(classfactor
实际上是第二列)。
答案 1 :(得分:2)
好吧,你可以从一个循环开始。
for(i in 2:length(names(data.frame))) {
data.frame[,i] <- data.frame[, 1] * data.frame[, i]
}
在与您一样小的数据集上,这应该相当快。