我正在尝试对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
任何人都有想法?
非常感谢!!
米克
答案 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)
重命名事物可能是assign
和get
的有效用法,但您不能直接重命名,您必须复制并删除旧对象。
示例对象:
> 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
>