R 将自定义函数映射到TIBLES列表中的特定列
我正在尝试应用R 将自定义函数映射到TIBLES列表中的特定列,r,R,我正在尝试应用map来缩放许多列,数据如下所示: # A tibble: 20 x 18 date ID var1 var2 Y Y_plus_1 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 <date> <chr> <dbl> <dbl> <dbl> <dbl>
map
来缩放许多列,数据如下所示:
# A tibble: 20 x 18
date ID var1 var2 Y Y_plus_1 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10
<date> <chr> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
1 2016-10-28 CAT1 795. 2.52e-5 0 0 4.11 13 0 1 0.0610 4.40e-4 -0.523 -0.753 -1.26e-2 0.170
2 2016-10-31 CAT1 785. -1.36e-2 0 0 4.14 12 0 1 0.0704 4.25e-4 -0.125 -0.620 -1.94e-2 0.169
3 2016-11-01 CAT1 784. -1.19e-3 1 0 3.98 11 0 1 0.0867 4.17e-4 -0.933 -1.30 -2.05e-2 0.162
4 2016-11-02 CAT1 769. -1.90e-2 0 1 6.00 10 0 1 0.0673 4.53e-4 -0.958 -0.793 -1.58e-2 0.159
5 2016-11-03 CAT1 762. -8.55e-3 0 0 8.42 10 0 1 0.0877 4.29e-4 -1.51 -1.17 -1.72e-2 0.164
6 2016-11-04 CAT1 762. -1.44e-4 1 0 7.95 10 0 1 0.0924 4.26e-4 -1.67 -1.21 -1.46e-2 0.162
7 2016-11-07 CAT1 783. 2.69e-2 1 1 7.89 10 0 1 0.0821 4.24e-4 -1.64 -1.06 -1.04e-2 0.161
8 2016-11-08 CAT1 791. 1.02e-2 1 1 7.64 10 0 1 0.0361 4.51e-4 -0.963 0.0116 -7.03e-3 0.117
9 2016-11-09 CAT1 785. -6.58e-3 1 1 4.51 10 0 1 0.0634 4.87e-4 -0.762 1.15 1.22e-2 0.0745
10 2016-11-10 CAT1 763. -2.90e-2 0 1 4.53 10 0 1 0.0290 5.26e-4 -1.32 0.560 3.11e-2 0.0816
11 2016-11-11 CAT1 754. -1.12e-2 0 0 4.40 10 0 1 0.0404 4.94e-4 -1.74 0.142 4.67e-2 0.120
12 2016-11-14 CAT1 736. -2.38e-2 0 0 4.19 10 0 1 0.0587 4.93e-4 -2.32 -0.504 6.39e-2 0.121
13 2016-11-15 CAT1 758. 3.04e-2 1 0 4.27 10 0 1 0.125 4.17e-4 -2.74 -1.19 5.87e-2 0.105
14 2016-11-16 CAT1 764. 7.90e-3 1 1 2.31 29 0 1 0.0637 3.30e-4 -2.16 0.593 -3.83e-2 0.173
15 2016-11-17 CAT1 771. 8.83e-3 1 1 2.31 28 0 1 0.0749 3.22e-4 -2.19 1.000 1.74e-2 0.185
16 2016-11-18 CAT1 761. -1.39e-2 0 1 2.31 27 0 1 0.0828 3.14e-4 -1.70 1.39 8.94e-3 0.181
17 2016-11-21 CAT1 769. 1.14e-2 1 0 2.31 26 0 1 0.0589 3.24e-4 -2.06 0.798 1.59e-2 0.248
18 2016-11-22 CAT1 768. -1.21e-3 0 1 2.31 25 0 1 0.0437 3.22e-4 -1.84 0.800 -2.79e-3 0.218
19 2016-11-23 CAT1 761. -9.48e-3 0 0 2.33 24 0 1 0.0399 3.26e-4 -1.67 0.749 8.74e-4 0.217
20 2016-11-25 CAT1 762. 9.07e-4 0 0 2.33 23 0 1 0.0536 3.25e-4 -1.90 0.617 -8.00e-4 0.180
一个变量的代码:
map(mylist, ~mutate(.x,
scala = Scale_Me(.x[["var1"]])))
数据:
mylist以下功能应该可以正常工作:
mylist %>%
map(~ mutate_at(.x, vars(starts_with("X")), Scale_Me))
但是,在函数不起作用的部分列中,sd=0
mylist %>%
map(~ mutate_at(.x, vars(starts_with("X")), Scale_Me))
但是,在函数不起作用的部分列中,sd=0
。什么是“所有X变量”?是指var1
和var2
,还是所有以X
开头的变量,或者两者都是?(我最初理解您的意思是以X
开头的变量,但您的示例代码使用var1
。)抱歉,忘了var1
和var2
,我只想map
覆盖变量X1…Xn
。好的。这更有意义。在代码中从var1
创建scala
变量非常混乱。@TimTeaFan的答案是正确的,那么“所有X变量”是什么意思?您的意思是var1
和var2
,还是所有以X
开头的变量,或者两者都是?(我最初理解您的意思是以X
开头的变量,但您的示例代码使用var1
。)抱歉,忘了var1
和var2
,我只想映射变量X1…Xn
。好的。这更有意义。在代码中从var1
创建scala
变量非常混乱。@TimTeaFan的答案是正确的,谢谢!关于sd=0我将忽略那些列(你已经在这里帮助过我),所以再次感谢!谢谢!关于sd=0这很好
我将忽略那些列(你已经在这里帮助过我),所以再次感谢!
mylist %>%
map(~ mutate_at(.x, vars(starts_with("X")), Scale_Me))