R:无法更改函数中的列名

时间:2016-07-07 17:35:49

标签: r

功能注册。其他做以下事项: (1)采用26列的数据帧 (2)将第1-2列的类更改为因子 (3)将第3-26列的类更改为数字 (4)将列27创建为列3-26的总和 (5)删除除1和27之外的所有列 (6)更改第2列的列名

  • 如果我正在读取的数据框是x,我希望第二列名称为xENRL。

但是当我调用该函数时,会出现以下错误:

  

z< - enrollment.other(OBC)   警告信息:   在colnames(x)[2]< - sprintf("%sENRL",name)中:     要替换的项目数量不是替换长度的倍数

    enrollment.other <- function(x){
       x[, 1:2] <- as.data.frame(sapply(x[, 1:2], as.factor))
       x[, 3:26]<- as.data.frame(sapply(x[, 3:26], as.numeric))
       x[, 27] <- rowSums(x[, c(3:26)])
       x <- as.data.frame(x[, c(1, 27)])
       name <- deparse(substitute(x))
       colnames(x)[2] <- sprintf("%sENRL", name)
       as.data.frame(x)
    }

1 个答案:

答案 0 :(得分:1)

我们可以使用set(ax(1),'YLim',[25.072 25.472]) set(ax(2),'YLim',[3.97 4.03])

match.call

或者,如果我们需要使用 enrollment.other <- function(x){ x[1:2] <- lapply(x[, 1:2], as.factor) x[3:26]<- lapply(x[3:26], as.numeric) x[27] <- rowSums(x[3:26]) x <- x[c(1, 27)] name <- as.character(match.call()[[2]]) colnames(x)[2] <- sprintf("%sENRL", name) x } enrollment.other(d1) # V1 d1ENRL #1 3 111 #2 3 117 #3 7 98 #4 5 118 #5 6 107 #6 9 109 #7 3 129 #8 7 124 #9 8 107 #10 3 130

deparse(substitute

数据

 enrollment.other <- function(x){
   name <- deparse(substitute(x))
   x[1:2] <-  lapply(x[, 1:2], as.factor)
   x[3:26]<-  lapply(x[3:26], as.numeric)
   x[27] <- rowSums(x[3:26])
   x <-   x[c(1, 27)]
   colnames(x)[2] <- sprintf("%sENRL", name)
  x
}