gpt4 book ai didi

重命名环境 r 中的对象

转载 作者:行者123 更新时间:2023-12-04 12:17:28 24 4
gpt4 key购买 nike

我想重命名环境 r 中的对象。例如,

y1 <- vector('list', 3)

x1 <- matrix(0, 3, 3)
x2 <- matrix(1, 3, 3)
x3 <- matrix(2, 3, 3)

y1[[1]] <- x1
y1[[2]] <- x2
y1[[3]] <- x3

y2 <- vector('list', 3)

y2[[1]] <- x1
y2[[2]] <- x2
y2[[3]] <- x3

y <- new.env()
y$y1 <- y1
y$y2 <- y2

names(y)

names(y) <- c('a', 'b')

我希望 y 里面的列表名称是 ab ,即 names(y)等于 c('a', 'b') ,

观察:我无法手动重命名变量 y1y2 ,我需要在环境内部改变它们。

最佳答案

如果不能直接给它们分配正确的名称,那么最简单的方法是用新的环境替换环境。如果您绝对需要保留环境(因为它在其他地方被引用),您可以使用相同的技巧替换其内容:

objs = mget(ls(env), env)
rm(list = ls(env), envir = env)
list2env(setNames(objs, new_names), env)

这里的相关部分是 list2env 的最后一个参数: 如果你不这样做,这只会创造一个新的环境。如果您指定现有环境,则会将名称添加到该环境中。

此代码将保留隐藏名称(即以 . 开头的名称)不变 - 要更改此设置,请提供 all.names论据 ls ,或使用 names .

关于重命名环境 r 中的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55305932/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com