私はこのようなサンプルデータフレームを持っています(私の完全なデータフレームには "d"と57要素があります)。
d <- seq(0, 100, 0.5)
Fe <- runif(201, min = 0, max = 1000)
Ca <- runif(201, min = 0, max = 1000)
Zr <- runif(201, min = 0, max = 1000)
Ti <- runif(201, min = 0, max = 1000)
Al <- runif(201, min = 0, max = 1000)
example <- data.frame(d, Fe, Ca, Zr, Ti, Al)
Ratio_Elements <- c("Fe", "Ti", "Zr", "d") #this subset of the
dataframe is user defined
Detrital_Divisor <- "Zr"
_
Detrital_divisorはユーザー入力に基づいて変更できますが、常に「例」データフレームの列になります。残りのすべての列をDetrital_Divisorコラムで、好ましくはパイプを使用して分割したいと思います。今私は持っています:
Example_Ratio <- example %>%
select (Ratio_Elements) #to subset to the user selected elements
mutate_all(./Detrital_Divisor)
_
しかし、私はエラーを受けます:
Error in Ops.data.frame(., Detrital_Divisor) :
‘/’ only defined for equally-sized data frames.
_
私も試してみました:
Example_Ratio <- example %>%
select (Ratio_Elements)
sweep(., Detrital_Divisor, MARGIN = 1, '/')
_
このフォーラムで尋ねられた類似の質問に基づいていますが、私はそれを働かせることはできません。私は誤りを得る
`Error in Ops.data.frame(x, aperm(array(STATS, dims[perm]), order(perm)), :
list of length 206340 not meaningful.`
_
私はこの質問がやや反復的であることを知っていますが、私が見つけた他の答えは私の状況で働いていません。私のデータフレーム全体には57の要素があるので、各列を個別に分割するためのコードを書くことは非常に長くなるでしょう。
あらゆるアドバイスのために事前にありがとう。
@ arg0naut91による回答を更新する(dplyr 1.0.0)
Example_Ratio <- example %>%
mutate(across(everything()), . / Zr) %>%
select(Ratio_Elements)
_