Воспроизводимый пример поможет. Из того, что я понял в вашей проблеме, вы хотите разделить некоторые столбцы, начинающиеся с 1 или 2 , на другой столбец.
Я покажу вам пример того, что можно сделать
df = data.table(
"Unite" = 2L,
"1y" = rnorm(10),
"2y" = rnorm(10)
)
df
Unite 1y 2y
1: 2 -1.4745875 1.1462019
2: 2 -0.9258819 1.3628202
3: 2 1.4676818 -0.5624427
4: 2 -0.2385211 -1.1704368
5: 2 -0.3172192 0.9186491
6: 2 1.5307232 -1.7340884
7: 2 0.5721486 -1.3873970
8: 2 0.2885397 0.5455075
9: 2 -0.9102919 -0.6109027
10: 2 0.8080263 -1.1048748
Что вы можете сделать, это комбинация lapply
+ .SD
:
cols <- colnames(df)[grepl("^(1|2)",colnames(df))]
df[, (cols) := lapply(.SD, function(d) d/get('Unite')), .SDcols = cols]
Unite 1y 2y
1: 2 -0.7372938 0.5731010
2: 2 -0.4629409 0.6814101
3: 2 0.7338409 -0.2812214
4: 2 -0.1192605 -0.5852184
5: 2 -0.1586096 0.4593246
6: 2 0.7653616 -0.8670442
7: 2 0.2860743 -0.6936985
8: 2 0.1442698 0.2727538
9: 2 -0.4551459 -0.3054514
10: 2 0.4040131 -0.5524374