I should note that if I have correctly understood your query, paste0 is
vectorized, so you can create vectors of names e.g. by:

nmvec <- paste("a", 1:5)

and then reference these names as needed. I should also add that you may do
better using ?with and/or ?within to access the columns in a data
frame/table for processing

If I've misunderstood, of course just ignore the above.

-- Bert

On Wed, Jun 18, 2025 at 7:48 AM Bert Gunter <bgunter.4...@gmail.com> wrote:

> If I understand correctly, see ?"[" : data tables inherit from data
> frames, and data frame columns can be indexed by their names as character
> strings.
>
> The following should give you the idea:
>
> d <- data.frame(a1 = 1:3, a2 = 4:6)
> x <- vector("numeric",2)
> for(i in 1:2){
>    nm <- paste0("a",i)
>    x[i] <- sum(d[, nm])
> }
> x
>
>
> Please note: This is **absoutely** awful R code just meant to illustrate
> the sort of thing that you want to do, not as a strict model to be followed.
>
> Also, as I don't use data tables, there may be better ways to do this
> using data table's enhanced functionality directly.
>
> Cheers,
> Bert
>
> On Wed, Jun 18, 2025 at 3:27 AM Naresh Gurbuxani <
> naresh_gurbux...@hotmail.com> wrote:
>
>> My data.table has many columns in groups of four.  On each group, I want
>> to perform the same set of calculations.
>>
>> 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))
>> ]
>>
>> # Now use mydt[, list(ABC_price, DEF_price)] for subsequent calculations
>>
>> With many columns, above method is error-prone and tedious.  Is it
>> possible to do something like:
>>
>> myvars <- c("ABC", "DEF")
>> for (avar in myvars) {
>> # code for above calculations
>> }
>>
>> Thanks,
>> Naresh
>>
>> ______________________________________________
>> R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see
>> https://stat.ethz.ch/mailman/listinfo/r-help
>> PLEASE do read the posting guide
>> https://www.R-project.org/posting-guide.html
>> and provide commented, minimal, self-contained, reproducible code.
>>
>

        [[alternative HTML version deleted]]

______________________________________________
R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide https://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.

Reply via email to