R在colnames中使用get()

时间:2013-12-09 22:03:04

标签: r get

我有一般项目字符串:

item='shoes'

然后我用:

assign(paste0(item,'_list'),lapply(etc))

assign(paste0(item,'_df'),sapply(etc)) 

然后我想更改数据框的名称 使用字符向量中的名称:

v=c('a','b','c')

我试着这样做:

colnames(get(paste0(item,'_df'))=v

我有:

could not find function "get<-"

错误

1 个答案:

答案 0 :(得分:2)

我会在assign() - ed的对象中创建名称。不确定第二次分配成功的可能性,因为我通常希望sapply返回矩阵而不是数据帧,这似乎是您的期望:

assign(paste0(item,'_list'), setNames(lapply(etc), v))

assign(paste0(item,'_df'), setNames(sapply(etc), v))

names函数将与列表,数据框和向量一起使用,但我认为它与矩阵不太匹配。它不会抛出错误(正如我预期的那样),而是在矩阵上创建一个看起来非常不合适的names属性。特别是它不为矩阵设置rownames或colnames。如果您想要将列名称分配给矩阵,则可能会成功:

setColNames <- function (object = nm, nm) 
{ if ( class(object) %in% c("list", "data.frame", "numeric", "character") ){
    names(object) <- nm
    return(object) 
   } else{
  if ( class(object) %in% c("matrix") ){
    colnames(object) <- nm
    return(object)
  } else { object }
                         }
}