选择数据帧列并在R中动态更新名称

时间:2015-04-12 23:57:07

标签: r function

我正在写一个考虑bool参数的函数:

Discretize <- function(Data, Price, Hour) # Bool input
{
  num_var <- sum(Price, Hour)
  Data_Qual <- as.data.frame(array(0, dim = c(nrow(Data), num_var)))
  names(Data_Qual) <- c(ifelse(Price, "Price.Qual", numeric(0)),
                      ifelse(Hour, "Hour.Qual", numeric(0)))
}

但是当我运行函数Discretize(Data = Date, Price = T, Hour = F)时,我收到以下错误:

  

名称错误(Data_Qual)&lt; - c(ifelse(Price,&#34; Price.Qual&#34;,   数字(0)),:&#39;名称&#39; attribute [2]的长度必须与   向量[1]

任何人都可以帮我解决这个问题,谢谢!

1 个答案:

答案 0 :(得分:0)

你可以使你的功能不那么复杂,并且像这样工作:

Discretize <- function(Data, Price, Hour) {
  df <- Data[,c(Price, Hour)]  
  names(df) <- c("Price.Qual", "Hour.Qual")[c(Price, Hour)]
  df
}

sampleData <- data.frame(P=1, H=2)
Discretize(Data=sampleData,Price=TRUE,Hour=FALSE)

#Price.Qual 
#     1