你可以这样做:
df=read.table(text="ID Mult t1 t2 t3 t4 t5
4 0.164 10 20 30 40 50
16 0.581 5 10 5 10 5
42 0.008 16 17 18 19 20
91 0.328 20 20 20 20 20
103 0.108 103 42 56 84 61",h=T)
df[,c(paste0(colnames(df[,grepl("^t.*",colnames(df),perl = T)]),"bis"))]=df[,grepl("^t.*",colnames(df),perl = T)]*df$Mult
df[,grepl("^t.*",colnames(df),perl = T)] 子集df 仅具有以“t”开头的列
df[,c(paste0(colnames(df[,grepl("^t.*",colnames(df),perl = T)]),"bis"))] 采用前一个子集的colnames(),并使用paste0() 与“bis”或任何字符串连接它们来表示变化。这将创建新的列,其中填充了乘法的结果。
> df
ID Mult t1 t2 t3 t4 t5 t1bis t2bis t3bis t4bis t5bis
1 4 0.164 10 20 30 40 50 1.640 3.280 4.920 6.560 8.200
2 16 0.581 5 10 5 10 5 2.905 5.810 2.905 5.810 2.905
3 42 0.008 16 17 18 19 20 0.128 0.136 0.144 0.152 0.160
4 91 0.328 20 20 20 20 20 6.560 6.560 6.560 6.560 6.560
5 103 0.108 103 42 56 84 61 11.124 4.536 6.048 9.072 6.588