首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >R:重命名列时间序列数据

R:重命名列时间序列数据
EN

Stack Overflow用户
提问于 2015-04-21 03:34:07
回答 2查看 1.4K关注 0票数 0

我正在尝试使用assign函数重命名时间序列的列,如下所示-

代码语言:javascript
运行
复制
assign(colnames(paste0(<logic_to_get_dataset>)),
c(<logic_to_get_column_names>))

我收到了一个警告:In assign(colnames(get(paste0("xvars_", TopVars[j, 1], "_lag", : only the first element is used as variable name

此外,不会发生列名分配。我认为这是由于colnames()函数造成的。有解决办法吗?

EN

回答 2

Stack Overflow用户

发布于 2015-04-21 04:10:33

问题是赋值只看向量的第一个元素。

您可以尝试这样做,例如:

代码语言:javascript
运行
复制
df = data.frame(x = 1:3, y = 4:2)
within(df, assign(colnames(df),c('a','b'))

您会注意到,R只查看第一个变量,它试图将由这些列名描述的值重新赋值给第二个值。这种行为显然不是你想要的。

不幸的是,它有点像hackey,但是你可以随时使用下面这样的东西

代码语言:javascript
运行
复制
data.frame.name = get_df()#some function that returns text
data.frame.columns = get_cols()#some function that returns text
eval(parse(text = paste0('colnames(',data.frame.name,') = c(',
 paste(data.frame.columns,collapse = ','),')')))

我倾向于避免做这些类型的表达式,但它应该按预期工作。

票数 0
EN

Stack Overflow用户

发布于 2015-04-21 06:05:20

它是这样的-

代码语言:javascript
运行
复制
    temp_var <- paste0('colnames(var_',TopLines[j,1],'_lag',get(paste0('uniqLg_',TopLines[j,1]))[k,],'_',get(paste0('uniqLg_',TopLines[j,1]))[k,]+12 , 
       ') <-  c(gsub( "xt',get(paste0('uniqLg_',TopLines[j,1]))[k,],'" , "xt',get(paste0('uniqLg_',TopLines[j,1]))[k,],'__',get(paste0('uniqLg_',TopLines[j,1]))[k,]+12, 
       '", colnames(var_',TopLines[j,1],'_xt',get(paste0('uniqLg_',TopLines[j,1]))[k,],')))')

print(temp_var )

eval(parse( text=temp_var ))

其中TopLines是一个只有一列的数据框,它包含一个行列表。这种方法唯一的问题是,我无法测试eval的输出,除非我实际打开数据集并查看更改是否受到影响。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29756784

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档