Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/17.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/visual-studio-code/3.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_Multiple Columns_Frame - Fatal编程技术网

R 对多列的操作会占用许多表

R 对多列的操作会占用许多表,r,multiple-columns,frame,R,Multiple Columns,Frame,我有两张桌子(dt1,dt2)。dt2包含与dt1相同的变量名称。 对于dt1中的每个变量,我想将其与dt2中的值相乘。 在下面的示例中,dt1中的x与4相乘,y与7相乘。 快速的方法是什么? 多谢各位 set.seed(123) dt1 <- data.frame(x = sample(1:10, 10, TRUE), y = sample(1:10, 10, TRUE) ) dt1 dt2 = data.frame (names = c("x", &

我有两张桌子(dt1,dt2)。dt2包含与dt1相同的变量名称。 对于dt1中的每个变量,我想将其与dt2中的值相乘。 在下面的示例中,dt1中的x与4相乘,y与7相乘。 快速的方法是什么? 多谢各位

  set.seed(123)
  dt1 <- data.frame(x = sample(1:10, 10, TRUE), y = sample(1:10, 10, TRUE) )
  dt1
  dt2 = data.frame (names = c("x", "y"), values = c(4, 7))
  dt2
set.seed(123)

dt1您可以尝试
sweep

> sweep(dt1, 2, dt2$values[match(dt2$names, names(dt1))], "*")
    x  y
1  12 35
2  12 21
3  40 63
4   8 63
5  24 63
6  20 21
7  16 56
8  24 70
9  36 49
10 40 70

>dt1[]dt1
xy
1  12 35
2  12 21
3  40 63
4   8 63
5  24 63
6  20 21
7  16 56
8  24 70
9  36 49
10 40 70

您可以尝试
扫描

> sweep(dt1, 2, dt2$values[match(dt2$names, names(dt1))], "*")
    x  y
1  12 35
2  12 21
3  40 63
4   8 63
5  24 63
6  20 21
7  16 56
8  24 70
9  36 49
10 40 70

>dt1[]dt1
xy
1  12 35
2  12 21
3  40 63
4   8 63
5  24 63
6  20 21
7  16 56
8  24 70
9  36 49
10 40 70

purrr
风格

map2_df(dt1, dt2 %>% pivot_wider(names_from = names, values_from = values), ~.y * .x)

# A tibble: 10 x 2
       x     y
   <dbl> <dbl>
 1    12    35
 2    12    21
 3    40    63
 4     8    63
 5    24    63
 6    20    21
 7    16    56
 8    24    70
 9    36    49
10    40    70
map2\u df(dt1,dt2%>%pivot\u更宽(names\u from=names,values\u from=values),~.y*.x)
#一个tibble:10x2
xy
1    12    35
2    12    21
3    40    63
4     8    63
5    24    63
6    20    21
7    16    56
8    24    70
9    36    49
10    40    70

purrr
风格

map2_df(dt1, dt2 %>% pivot_wider(names_from = names, values_from = values), ~.y * .x)

# A tibble: 10 x 2
       x     y
   <dbl> <dbl>
 1    12    35
 2    12    21
 3    40    63
 4     8    63
 5    24    63
 6    20    21
 7    16    56
 8    24    70
 9    36    49
10    40    70
map2\u df(dt1,dt2%>%pivot\u更宽(names\u from=names,values\u from=values),~.y*.x)
#一个tibble:10x2
xy
1    12    35
2    12    21
3    40    63
4     8    63
5    24    63
6    20    21
7    16    56
8    24    70
9    36    49
10    40    70