我有一组以ppp_
开头的变量,对应于数据帧的id
列。我想将从X1
到X5
的每个列除以相应的变量ppp_xxx
。
ppp_TZA = 803.8115234375
ppp_ZMB = 0.539304196834564
ppp_SGP = 0.879599809646606
ppp_TUR = 1.162452
> set.seed(10000)
> dd <- data.frame(id=c("TZA", "ZMB", "SGP", "TUR"), matrix(runif(5*4)*1000, nrow=4))
> dd
id X1 X2 X3 X4 X5
1 TZA 321.68642 452.6506 106.8596 859.7612 428.8721
2 ZMB 94.38782 386.7600 837.7849 728.1341 243.5673
3 SGP 468.95386 550.1910 488.5095 921.8389 611.7136
4 TUR 990.72595 838.9120 494.1026 580.5896 262.3972
> dd %>% rowwise() %>% mutate(across(.cols=(2:4), .fns = ~.x/get(paste0("ppp_",id))))
# A tibble: 4 x 6
# Rowwise:
id X1 X2 X3 X4 X5
<chr> <dbl> <dbl> <dbl> <dbl> <dbl>
1 TZA 0.400 0.563 0.133 860. 429.
2 ZMB 175. 717. 1553. 728. 244.
3 SGP 533. 626. 555. 922. 612.
4 TUR 852. 722. 425. 581. 262.
然而,结果是在没有我设置舍入的情况下自动舍入数字。我试过options(digits=10)
,但没有用。
您可以通过更改tibble(即options(pillar.sigfig) = 7
(的选项来显示更多数字。值得注意的是,数字实际上并没有丢失,只是没有显示在帧中,即如果您丢失了:
x <- dd %>% rowwise() %>% mutate(across(.cols=(2:4), .fns = ~.x/get(paste0("ppp_",id))))
x[1, 2] %>% as.numeric()
你会看到完整的值,并确认它们在那里。