1

一連の変数の観測を含むデータ フレームがあります。

mydata <-  data.frame(Sample = c("A", "B", "C", "D"), 
  V1 = c(25, 27, 18, 29),
  V2 = c(32, 45, 28, 30),
  V3 = c(16, 32, 29, 22),
  V4 = c(27, 29, 28, 32))

別のデータ フレームに保存した変数固有の定数 E に従って、各列のデータを変換する必要があります。

e <- data.frame(Var = c("V1", "V3", "V2", "V4"), E = c(2, 1.4, 1.7, 1.8))

mydataの各変数の正しい定数に基づいてのデータの変換された値を含む新しいデータ フレームが必要ですe。ここで、新しい値は

=1/E^(value in mydata)

lapplyの各列をループする方法は知っていますが、変数名に基づいて、mydata各列の E の値を から取得する必要があることを指定する方法がわかりません。e( の値はeの列と同じ順序ではなく、mydata場合によっては に未使用の行e、つまり に存在しない変数の E の値が存在しmydataます。

別のデータ フレームの変数名と E の対応する値に基づいて、あるデータ フレームの各列にデータ変換を適用するにはどうすればよいですか?

4

1 に答える 1

2

これが私がそれにアプローチする方法です。列をループする代わりに、列名をループします。

sapply(colnames(mydata)[-1], function(x) 1/(e$E[e$Var == x]^mydata[,x]))

#                V1           V2           V3           V4
# [1,] 2.980232e-08 4.223131e-08 4.591467e-03 1.281275e-07
# [2,] 7.450581e-09 4.263817e-11 2.108157e-05 3.954553e-08
# [3,] 3.814697e-06 3.527201e-07 5.784782e-05 7.118195e-08
# [4,] 1.862645e-09 1.220485e-07 6.097941e-04 6.780783e-09

他に何かお探しの場合はお知らせください。

于 2013-06-13T02:30:49.340 に答える