使用sweep函数应用R中不同列表中的函数
我有两个列表,每个列表有多个元素,每个元素都是一个数据框。例如使用sweep函数应用R中不同列表中的函数,r,list,matrix,dataframe,R,List,Matrix,Dataframe,我有两个列表,每个列表有多个元素,每个元素都是一个数据框。例如 set.seed(1234) k = data.frame(a=rnorm(5,10),b=rnorm(5,10)) l = data.frame(a=rnorm(5,3),b=rnorm(5,3)) lista <- list(k=k,l=l) k = data.frame(x=rnorm(5,20)) l = data.frame(x=rnorm(5,6)) listb <- list(k=k,l=l)
set.seed(1234)
k = data.frame(a=rnorm(5,10),b=rnorm(5,10))
l = data.frame(a=rnorm(5,3),b=rnorm(5,3))
lista <- list(k=k,l=l)
k = data.frame(x=rnorm(5,20))
l = data.frame(x=rnorm(5,6))
listb <- list(k=k,l=l)
> lista
$k
a b
1 8.792934 10.506056
2 10.277429 9.425260
3 11.084441 9.453368
4 7.654302 9.435548
5 10.429125 9.109962
$l
a b
1 2.522807 2.889715
2 2.001614 2.488990
3 2.223746 2.088805
4 3.064459 2.162828
5 3.959494 5.415835
> listb
$k
x
1 20.13409
2 19.50931
3 19.55945
4 20.45959
5 19.30628
$l
x
1 4.551795
2 6.574756
3 4.976344
4 5.984862
5 5.064051
对“l”
重复相同的步骤
我尝试在R中使用sweep函数和Map,如下所示:
form <- Map(function(x,y) abs(sweep(x,1,y,FUN="-"))/(sweep(abs(x),1,abs(y),FUN="+")),lista,listb)
编辑:将data.frame转换为矩阵能够提供所需的输出
form <- Map(function(x,y) abs(sweep(as.matrix(x),1,as.matrix(y),FUN="-"))/(sweep(abs(as.matrix(x)),1,abs(as.matrix(y)),FUN="+")),lista,listb)
form在sweep函数中将数据帧更改为矩阵能够提供所需的输出
form <- Map(function(x,y) abs(sweep(as.matrix(x),1,as.matrix(y),FUN="-"))/(sweep(abs(as.matrix(x)),1,abs(as.matrix(y)),FUN="+")),lista,listb)
form我想知道这样的东西是否适合你listb谢谢大卫。在扫描函数中将dataframe更改为矩阵能够提供所需的输出<代码>表单您可能应该将此作为答案发布并接受它
form <- Map(function(x,y) abs(sweep(as.matrix(x),1,as.matrix(y),FUN="-"))/(sweep(abs(as.matrix(x)),1,abs(as.matrix(y)),FUN="+")),lista,listb)
form <- Map(function(x,y) abs(sweep(as.matrix(x),1,as.matrix(y),FUN="-"))/(sweep(abs(as.matrix(x)),1,abs(as.matrix(y)),FUN="+")),lista,listb)