Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.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_List_Function - Fatal编程技术网

R将列表与泛函相结合

R将列表与泛函相结合,r,list,function,R,List,Function,我不熟悉R中的泛函,所以这个问题是因为缺乏基本知识 我有两张清单。两个列表都包含大量数据集,具有相同的长度和标题。我想要的是根据两个列表之间的一个简单等式,向列表1中的所有数据帧添加一列。 对于每个列表,我要执行以下操作: temp$zscore <- (temp$Rho - zscore$mean)/zscore$SD 示例数据帧列表2: > zscore $E1 mean SD 1 -0.111857 0.2508317 $E2 m

我不熟悉R中的泛函,所以这个问题是因为缺乏基本知识

我有两张清单。两个列表都包含大量数据集,具有相同的长度和标题。我想要的是根据两个列表之间的一个简单等式,向列表1中的所有数据帧添加一列。 对于每个列表,我要执行以下操作:

temp$zscore <- (temp$Rho - zscore$mean)/zscore$SD
示例数据帧列表2:

> zscore
$E1
       mean        SD
1 -0.111857 0.2508317

$E2
        mean        SD
1 0.09520034 0.2050961

这可以通过将函数映射到其以下参数的
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

f嗯,这对我没用。。两个列表都包含我添加的多个数据帧。也许我应该提一下。@joffie两个测试列表都包含两个df。你能提供一个更好的数据示例吗?可能它不起作用,因为清单2的示例是
zscore$E1
。这是什么?
E1
?嗯,你说得对。。。当我使用你的数据时,它确实起作用。我将改进我的示例1是列表的名称。我已将其更新为非简化版本。希望这有帮助。谢谢好吧,对不起,是我的错。修复了问题,现在可以正常工作了。谢谢
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
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)
f <- function(x, y){
  x[['E1']][['zscore']] <- (x[['E1']][['Rho']] - y[['E1']][['mean']])/y[['E1']][['SD']]
  x
}