微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

将在 for 循环中创建的所有变量视为向量,例如`c(x1,x2,x3,x4,x5,x6,x7,x8,x9,x10)`

如何解决将在 for 循环中创建的所有变量视为向量,例如`c(x1,x2,x3,x4,x5,x6,x7,x8,x9,x10)`

代码

for (i in 1:10) {
    assign(paste0('x',i),i)
}

在 for 循环中创建 10 个变量。我想在一个向量中考虑所有这些变量,例如

c(x1,x2,x3,x4,x5,x6,x7,x8,x9,x10)

解决方法

这个问题可以用lsmget的组合来解决。

for (i in 1:10) {
    assign(paste0('x',i),i)
}

x_vars <- ls(pattern = "^x\\d+$",envir = .GlobalEnv)
x_all <- mget(x_vars,envir = .GlobalEnv)
x_all <- sort(unlist(x_all))
x_all 
# x1  x2  x3  x4  x5  x6  x7  x8  x9 x10 
#  1   2   3   4   5   6   7   8   9  10 

我假设向量元素的顺序必须与它们在 for 循环中创建的顺序相同。
或者,不创建 x_vars

x_all <- mget(ls(pattern = "^x\\d+$",envir = .GlobalEnv),envir = .GlobalEnv)
x_all <- sort(unlist(x_all))
,

不需要循环。为什么不直接命名一个值向量>

 x_all <- 1:10
 names(x_all) <- paste0("x",x_all)
 x_all
#----------------
 x1  x2  x3  x4  x5  x6  x7  x8  x9 x10 
  1   2   3   4   5   6   7   8   9  10 
,

带有 str_c 的选项

library(stringr)
 names(x_all) <- str_c("x",x_all)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。