Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 使用来自另一个数据帧的值将函数应用于数据帧的每一列_R_Dataframe_Lapply - Fatal编程技术网

R 使用来自另一个数据帧的值将函数应用于数据帧的每一列

R 使用来自另一个数据帧的值将函数应用于数据帧的每一列,r,dataframe,lapply,R,Dataframe,Lapply,我有一个数据框,包含一组变量的观测值: 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)) 我知道如何使用lappy在mydata中循环每个列,但我不知道如何根据变量名指定每个列的E值需要来自E。(e中的值与mydata中的列

我有一个数据框,包含一组变量的观测值:

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))
我知道如何使用
lappy
mydata
中循环每个列,但我不知道如何根据变量名指定每个列的E值需要来自
E
。(
e
中的值与
mydata
中的列顺序不同,在某些情况下,
e
中会有未使用的行,即
mydata
中不存在的变量的e值。)


如何根据变量名和不同数据帧中对应的E值,将数据转换应用于一个数据帧的每一列?

以下是我的处理方法。我将在列名上循环,而不是在列上循环:

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

如果您正在寻找其他内容,请告诉我。

+1-此方法的一种变体是为
e
使用命名向量,如:
e
=1/E^(value in mydata)
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