R,如何以编程方式创建和引用列名

时间:2016-08-24 22:31:31

标签: r

我有一个包含多个列的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

0 个答案:

没有答案