rowSums()
が1より大きい場合、行の合計で除算したいと考えています。私はfor()
ループなしでこれを行う方法を考えていないので、私はループなしのソリューションを探しています。rowSumsが1より大きい場合、合計で割ります
サンプルデータにそれを行うには良い方法があれば、私は
この作品を試みたが、私は不思議何
dat <- structure(list(x1 = c(0.18, 0, 0.11, 0.24, 0.33), x2 = c(0.34,
0.14, 0.36, 0.35, 0.21), x3 = c(0.1, 0.36, 0.12, 0.07, 0.18),
x4 = c(0.08, 0.35, 0.06, 0.1, 0.09), x5 = c(0.26, 0.13, 0.22,
0.31, 0.22)), .Names = c("x1", "x2", "x3", "x4", "x5"), row.names = c(NA,
5L), class = "data.frame")
> rowSums(dat)
1 2 3 4 5
0.96 0.98 0.87 1.07 1.03
:
a <- which(rowSums(dat) > 1)
dat[a, ] <- dat[a,]/rowSums(dat[a,]
> rowSums(dat)
1 2 3 4 5
0.96 0.98 0.87 1.00 1.00
これはまさに私が提示しようとしていた解決策です。 (あなたは閉じ括弧がありません) –