[R] From strings to column names

Ivan Krylov |kry|ov @end|ng |rom d|@root@org
Wed Jun 18 22:00:33 CEST 2025


В Wed, 18 Jun 2025 10:27:37 +0000
Naresh Gurbuxani <naresh_gurbuxani using hotmail.com> пишет:

> mydt <- data.table(
> date = seq(as.IDate("2025-06-01"), by = 1, length.out = 10),
> ABC1_price = runif(10, 100, 120), ABC1_volume = runif(10, 200, 300),
> ABC2_price = runif(10, 100, 120), ABC2_volume = runif(10, 200, 300),
> DEF1_price = runif(10, 100, 120), DEF1_volume = runif(10, 200, 300),
> DEF2_price = runif(10, 100, 120), DEF2_volume = runif(10, 200, 300))
> 
> mydt[
> , let(ABC_price = fifelse(ABC1_volume < ABC2_volume, ABC2_price,
> ABC1_price),
> DEF_price = fifelse(DEF1_volume < DEF2_volume, DEF2_price,
> DEF1_price)) ]

Thank you for the reproducible example! How about the following?

for (var in c("ABC", "DEF")) mydt[,
 price := fifelse(volume1 < volume2, price2, price1),
 env = list(
  price = paste0(var, '_price'),
  price1 = paste0(var, '1_price'),
  price2 = paste0(var, '2_price'),
  volume1 = paste0(var, '1_volume'),
  volume2 = paste0(var, '2_volume')
 )
]

-- 
Best regards,
Ivan



More information about the R-help mailing list