ret[,c1][[1]]
长度是100,而tmp1
每列的长度是3,这就是为什么会报错。把长度改一下就好:
library(dplyr)
#>
#> 载入程辑包:'dplyr'
#> The following objects are masked from 'package:stats':
#>
#> filter, lag
#> The following objects are masked from 'package:base':
#>
#> intersect, setdiff, setequal, union
tmp1 <- data.frame(c1 = c(1,2,2),c2 = c(3,1,3))
set.seed(123)
ret <- data.frame(x1 = rnorm(100),x2 = rnorm(100),x3 = rnorm(100))
head(ret)
#> x1 x2 x3
#> 1 -0.56047565 -0.71040656 2.1988103
#> 2 -0.23017749 0.25688371 1.3124130
#> 3 1.55870831 -0.24669188 -0.2651451
#> 4 0.07050839 -0.34754260 0.5431941
#> 5 0.12928774 -0.95161857 -0.4143399
#> 6 1.71506499 -0.04502772 -0.4762469
tmp1 <- tmp1 %>%
as_tibble() %>%
mutate(
test1 = ret[,c1][[1]][1:3],
test2 = ret[,c2][[1]][1:3]
)
tmp1
#> # A tibble: 3 x 4
#> c1 c2 test1 test2
#> <dbl> <dbl> <dbl> <dbl>
#> 1 1 3 -0.560 2.20
#> 2 2 1 -0.230 1.31
#> 3 2 3 1.56 -0.265
<sup>Created on 2021-04-05 by the reprex package (v2.0.0)</sup>