将data.frame中的所有列乘以第一列

时间:2014-12-17 20:07:50

标签: r dataframe

我需要将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列。

我无法弄清楚该怎么做。有什么建议吗?

2 个答案:

答案 0 :(得分:7)

如果我没弄错的话,你可以做到

df[-(1:2)] <- df[["classfactor"]] * df[-(1:2)]

其中df是您的数据框,第一列是sampleclassfactor实际上是第二列)。

答案 1 :(得分:2)

好吧,你可以从一个循环开始。

for(i in 2:length(names(data.frame))) {
    data.frame[,i] <- data.frame[, 1] * data.frame[, i]
}

在与您一样小的数据集上,这应该相当快。