我有一般项目字符串:
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<-"
错误
答案 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 }
}
}