【发布时间】:2019-05-21 07:30:07
【问题描述】:
这是我在这里的第一篇文章。因此,如果它不符合更多经验丰富的成员的高清晰度标准,请多多包涵。
我的全球环境中有 4 个对象(代表 4 年),它们是由 12 个数据框组成的列表(一年中的每个月一个)。它们具有一致的结构,并且数据框的列名都相同。我正在尝试使用一个函数一举更改所有 4 个列表中数据帧的这些列名,然后用新对象覆盖我的全局环境中的所有 4 个对象,这些对象具有具有新列名的数据帧.
这是我的功能:
change.name <- function(data){
for (i in 1:length(data)){
names(data[[i]]) <- c("a", "b", "c", "d", "e")
}
assign(deparse(substitute(data)), value = data, envir = globalenv())
}
我使用我的功能:
change.name(my_object1)
它有效,除了我收到以下警告消息:
警告信息: 在assign(deparse(substitute(data))中,value = data, envir = globalenv()) :只有第一个元素用作变量 名字
并且我的全局环境中的对象没有被覆盖。我得到一个名称如下的新对象:
"list(Jan = 结构(list(a = c(11, 34, 36, 49, 55, 68, "
我知道这与函数变量在运行函数时(或类似的东西)时 R 创建的新环境中的存储方式有关。
我的问题很简单:我该如何解决这个问题?
【问题讨论】:
-
这是完成此任务的一种非常不寻常的方法(更改数据帧集合上的列名)。是否有特定原因让您觉得必须使用
assign、deparse等?
标签: r