我有一个包含多个列的csv,其名称类似于XX_0, XXX_1,...XXX_20
我想在csv的每一行添加一个新列,这些列是这些列的加权和。 E.g DataFrame$WeightedX = 1*DataFRame$X_0+2*DataFRame$X_1+....+21**DataFRame$X_21
有没有办法以编程方式执行此操作?
手动下的代码有效。我想在下面的程序化尝试中做一些事情
手动版本
findWeightedSumManual <- function(x){
weights <- c(1,10,20)
return(weights[1]*x$X_0 + weights[2]*x$X_1 + weights[3]*x$X_2)
}
Data = data.table(1:3,2:4,5:7)
colnames(Data) <- c('X_0', 'X_1', 'X_2')
Data$WeightedSum1 <- findWeightedSumManual(Data)
但我希望按照
的方式进行编程findWeightedSum <- function(x){
weights <- c(1,10,20)
sum <- 0
for (i in 1:ncol(x)) {
colName <- paste("X_",i,sep="")
sum <- sum + weights[i]*x$colName
}
return(sum)
}
Data = data.table(1:3,2:4,5:7)
colnames(Data) <- c('X_0', 'X_1', 'X_2')
Data$WeightedSum2 <- findWeightedSum(Data)
Data