如何解决将在 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)
解决方法
这个问题可以用ls
和mget
的组合来解决。
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 举报,一经查实,本站将立刻删除。