将行分配给来自不同数据帧的列(套用操作)

阿古拉里

我想知道如何将一个数据帧的给定行分配给另一个数据帧的给定列,而不进行合并,聚合等操作。例如,使df1的第1行与df 2的第1列相关联,因此在df 2的第1列上执行的操作仅取自df 1的第1行的值。

让我们创建df1(即V)和df2(即M):

V<-data.frame(A=c(2,1),B=c(4,2),C=c(6,3))
M<-data.frame(V1=rep(1,10),V2=rep(2,10)) 

#> V
   A B C
V1 2 4 6
V2 1 2 3

#> M
   V1 V2
1   1  2
2   1  2
3   1  2
4   1  2
5   1  2
6   1  2
7   1  2
8   1  2
9   1  2
10  1  2

然后创建一个函数列表,以传递M并从V取值

FUNS<-list(
F1<-function(x,A,B,C) A*x+B*x+C*x,
F2<-function(x,A,B,C) A*x-B*x-C*x
)

现在,我想传递M上的函数列表(但“理想情况下”,我只想将第1行中存储的值用于第1列,将第2行中的值使用至第2列,但是不幸的是,我没有找到如何。

res1<-list(data.frame(matrix(,10,2)),data.frame(matrix(,10,2)))
for(i in seq_along(V[,1])){
res1[[i]]<-lapply(FUNS,function(f) f(M,V[i,1],V[i,2],V[i,3]))
}

这将返回:1)第一个功能在第1列和第2列上实现,具有第1行的一组值2)第二个功能在第1列和第2列上实现,具有第1行的一组值3)第一个功能在第1列和第2列上实现,具有第1行的值第2行的值4)在第1列和第2列上使用第2行的值集实现的第二个功能

我想要的是:1)在第1列上实现的第一和第二个功能,仅使用第1行的值2)在第2列上实现的第一个和第二功能,仅使用第2行的值

> res1
[[1]]
[[1]][[1]]
   V1 V2
1  12 24
2  12 24
3  12 24
4  12 24
5  12 24
6  12 24
7  12 24
8  12 24
9  12 24
10 12 24

[[1]][[2]]
   V1  V2
1  -8 -16
2  -8 -16
3  -8 -16
4  -8 -16
5  -8 -16
6  -8 -16
7  -8 -16
8  -8 -16
9  -8 -16
10 -8 -16


[[2]]
[[2]][[1]]
   V1 V2
1   6 12
2   6 12
3   6 12
4   6 12
5   6 12
6   6 12
7   6 12
8   6 12
9   6 12
10  6 12

[[2]][[2]]
   V1 V2
1  -4 -8
2  -4 -8
3  -4 -8
4  -4 -8
5  -4 -8
6  -4 -8
7  -4 -8
8  -4 -8
9  -4 -8
10 -4 -8

帮助真的很感激!!!干杯

阿克伦

尝试

 resN <- lapply(seq_len(nrow(V)), function(i) {
               v <- unlist(V[i,])
              lapply(seq_along(FUNS), function(i) 
                  FUNS[[i]](M, v[1], v[2], v[3])) })

这与 res1

编辑

从描述中看来,您想要这样:

  V1 <- as.data.frame(t(V))
  resN1 <- Map(function(.FUN,y,z) do.call(cbind,
               lapply(.FUN, function(x) x(y, z[1],z[2],z[3]))) ,
                                                list(FUNS), M, V1)
   resN1
   #[[1]]
  #     [,1] [,2]
  #[1,]   12   -8
  #[2,]   12   -8
  #[3,]   12   -8
  #[4,]   12   -8
  #[5,]   12   -8
  #[6,]   12   -8
  #[7,]   12   -8
  #[8,]   12   -8
  #[9,]   12   -8
 #[10,]   12   -8

 #[[2]]
 #     [,1] [,2]
 # [1,]   12   -8
 # [2,]   12   -8
 # [3,]   12   -8
 # [4,]   12   -8
 # [5,]   12   -8
 # [6,]   12   -8
 # [7,]   12   -8
 # [8,]   12   -8
 # [9,]   12   -8
 #[10,]   12   -8

这与

  M[,1]*V[1,1]+M[,1]*V[1,2]+M[,1]*V[1,3]
   #[1] 12 12 12 12 12 12 12 12 12 12

  M[,1]*V[1,1]-M[,1]*V[1,2]-M[,1]*V[1,3]
   #[1] -8 -8 -8 -8 -8 -8 -8 -8 -8 -8

  M[,2]*V[2,1]+M[,2]*V[2,2]+M[,2]*V[2,3]
   #[1] 12 12 12 12 12 12 12 12 12 12

  M[,2]*V[2,1]-M[,2]*V[2,2]-M[,2]*V[2,3]
  #[1] -8 -8 -8 -8 -8 -8 -8 -8 -8 -8



  

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

根据来自不同数据框的第二(较短)列的值将值分配给列

将一个数据帧的行顺序分配给不同行的空数据帧,直到填充空数据帧中的所有位置

通过行索引将小数据帧分配给大数据帧

将多个值分配给数据帧中的不同单元格

根据日期将新变量(来自不同的df)分配给数据框

range(1:len(df))将NaN分配给数据帧中的最后一行

如何连续将变量分配给数据帧行(熊猫)?

如何将输出的多个值分配给数据帧的新多列?

将数据分配给来自服务目标 C 的按钮

将列表中的元素分配给数据框的不同列

根据多个不同的列条目将系列分配给熊猫数据框

如何基于R数据帧或数据表中其他列中的值将值分配给列

将列值分配给熊猫数据框中的唯一行

将散列分配给熊猫中的类别数据行

通过其坐标将行和列分配给数据框中的点

将数据分配给for循环中的现有列

将新列分配给数据表

将索引列分配给空的熊猫数据框

将strsplit的结果分配给数据框的多列

如何将数据列分配给变量

通过“assign”将新列分配给数据框

将数据框列分配给for循环语法问题

将值分配给特定行中的列列表

将值按行分配给多列

使用循环将数据帧数据分配给数据帧标签

如何将数据帧的每一行分配给另一个数据帧的相应值?

为什么分配给loc和slice的数据帧与单列不同?

将图像分配给不同的按钮

将值分配给数据帧中的新列时出现错误“试图在数据帧的切片副本上设置一个值”