我正在尝试使用assign函数重命名时间序列的列,如下所示-
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()函数造成的。有解决办法吗?
发布于 2015-04-21 04:10:33
问题是赋值只看向量的第一个元素。
您可以尝试这样做,例如:
df = data.frame(x = 1:3, y = 4:2)
within(df, assign(colnames(df),c('a','b'))您会注意到,R只查看第一个变量,它试图将由这些列名描述的值重新赋值给第二个值。这种行为显然不是你想要的。
不幸的是,它有点像hackey,但是你可以随时使用下面这样的东西
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 = ','),')')))我倾向于避免做这些类型的表达式,但它应该按预期工作。
https://stackoverflow.com/questions/29756784
复制相似问题