R中几个数据帧名称的大量修改

时间:2014-02-25 07:27:08

标签: r

我正在尝试对R中的多个数据帧名称进行批量修改。 名称全部以“.csv”结束,我想删除这4个字符。 我正在尝试使用以下代码:

for (i in (length(ls()))) { 

  ls()[i] <- gsub("*.csv", "", ls()[i]) 

} 

但是我收到以下错误消息:

Error in ls()[i] <- gsub("*.csv", "", ls()[i]) : 
  invalid (NULL) left side of assignment 

任何人都有想法?

非常感谢!!

米克

2 个答案:

答案 0 :(得分:3)

这是一个简单的方法;

# get object names
obj <- ls(pattern = "\\.csv$") 

# create new names and assign to global environment
list2env(setNames(mget(obj), sub("\\.csv$", "", obj)), globalenv())

# remove 'old' objects
rm(list = obj)

答案 1 :(得分:2)

重命名事物可能是assignget的有效用法,但您不能直接重命名,您必须复制并删除旧对象。

示例对象:

> x.csv=1;y.csv=22;z.csv=333

我们有:

> ls()
[1] "x.csv" "y.csv" "z.csv"

我们循环,确保我们在.GlobalEnv中执行所有操作:

> sapply(ls(pattern="\\.csv$"),function(n){
        assign(gsub(".csv","",n),get(n),envir=.GlobalEnv);
        remove(list=n,envir=.GlobalEnv)
        })

现在我们有:

> ls()
[1] "x" "y" "z"
> x
[1] 1
> y
[1] 22
> z
[1] 333
>