Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ember.js/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R中的动态变量_R - Fatal编程技术网

R中的动态变量

R中的动态变量,r,R,我使用的是RStudio(3.0.2版)和R 在我的任务中,我想在RScript中创建以下变量并赋值 AA_1_11 <- 1 AA_2_22 <- 2 AA_3_33 <- 3 AA_4_44 <- 4 BB_1_11 <- 5 BB_2_22 <- 6 BB_3_33 <- 7 BB_4_44 <- 8 AA_1_11这不需要循环。执行此类操作的首选“R方式”是将所有这些变量保存在一个列表中。在保持全局环境“干净”的同时,这使引用变量变得更容

我使用的是RStudio(3.0.2版)和R

在我的任务中,我想在RScript中创建以下变量并赋值

AA_1_11 <- 1
AA_2_22 <- 2
AA_3_33 <- 3
AA_4_44 <- 4
BB_1_11 <- 5
BB_2_22 <- 6
BB_3_33 <- 7
BB_4_44 <- 8

AA_1_11这不需要循环。执行此类操作的首选“R方式”是将所有这些变量保存在一个列表中。在保持全局环境“干净”的同时,这使引用变量变得更容易,也使以后对所有变量执行操作变得更容易

例如,对于此操作,您可以执行以下操作

char_list <- c("AA", "BB")
num_list <- c("1_11", "2_22", "3_33", "4_44")

x <- setNames(
    as.list(1:8),
    paste(rep(char_list, each=4), num_list, sep="_")
)
可以使用
$
按名称访问,使用
[
[
按名称或编号访问,使用
with()

x$AA_1_11
# [1] 1
x[[5]]
# [1] 5
with(x, c(AA_1_11, BB_4_44))
# [1] 1 8

在你的代码中,你没有必要告诉R去创建那些变量。你的第一个循环确实成功地创建了你想要的名字的向量列表(一个字符串),但是它没有给它们赋值作为变量

然而,R在动态变量创建方面非常出色。为什么要将相同的值分配给一组不同的变量?例如,可以使用这些变量创建数据帧吗

array <- data.frame(variables = numeric(length(char_num_array)))
rownames(array) <- char_num_array
array
        variables
AA_2_22         0
AA_3_33         0
AA_4_44         0
BB_1_11         0
BB_2_22         0
BB_3_33         0
BB_4_44         0

请不要在您的问题中包含
rm(list=ls()
。如果复制/粘贴您的代码而不注意它,它可能会删除我们工作区中的重要数据。感谢@RichardScriven在Futuranks@JDB中更加小心,分配()这就是我一直在寻找的。Fuh,三天来,我一直在寻找这个东西。你是天使派来的。感谢@RichardScriven使用上面的语法来学习更多如何在我正在工作的脚本中操作它。
names(x)
# [1] "AA_1_11" "AA_2_22" "AA_3_33" "AA_4_44" "BB_1_11"
# [6] "BB_2_22" "BB_3_33" "BB_4_44"
x$AA_1_11
# [1] 1
x[[5]]
# [1] 5
with(x, c(AA_1_11, BB_4_44))
# [1] 1 8
array <- data.frame(variables = numeric(length(char_num_array)))
rownames(array) <- char_num_array
array
        variables
AA_2_22         0
AA_3_33         0
AA_4_44         0
BB_1_11         0
BB_2_22         0
BB_3_33         0
BB_4_44         0
for(item in char_num_array) assign(item, 1)