R将列表与泛函相结合
我不熟悉R中的泛函,所以这个问题是因为缺乏基本知识 我有两张清单。两个列表都包含大量数据集,具有相同的长度和标题。我想要的是根据两个列表之间的一个简单等式,向列表1中的所有数据帧添加一列。 对于每个列表,我要执行以下操作: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
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
}