Это можно сделать с помощью Map
, который сопоставляет функцию со следующими аргументами, в данном случае двумя списками list1
и list2
:
f <- function(x, y){
x[['zscore']] <- (x[['Rho']] - y[['mean']])/y[['SD']]
x
}
Map(f, list1, list2)
#[[1]]
# Rho Pval zscore
#1 0.05054603 0.8421223 0.6055256
#2 0.41706072 0.0850892 2.0601302
#3 0.24045408 0.3350444 1.3592229
#
#[[2]]
# Rho Pval zscore
#1 0.05054603 0.8421223 0.6055256
#2 0.41706072 0.0850892 2.0601302
#3 0.24045408 0.3350444 1.3592229
Data
temp <- read.table(text = "
Rho Pval
0.05054603 0.8421223
0.41706072 0.0850892
0.24045408 0.3350444
", header = TRUE)
zscore <- read.table(text = "
mean SD
1 -0.1020274 0.2519686
", header = TRUE)
list1 <- list(temp, temp)
list2 <- list(zscore, zscore)
Edit
С новой структурой данных следующая обновленная функция кажется более подходящей для решения проблемы.
f <- function(x, y){
x[['E1']][['zscore']] <- (x[['E1']][['Rho']] - y[['E1']][['mean']])/y[['E1']][['SD']]
x
}