Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ssl/3.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,我在baser中有很多列表,我想循环这些列表并对列表元素进行更改。我想在一行中进行此更改,硬编码每个列表的名称不是一个选项: a <- list(thing1=1:5, thing2=6:10) b <- list(thing1=1:5, thing2=6:10) for(list in c("a","b"){ an_element <- paste(list, "$thing1"

我在baser中有很多列表,我想循环这些列表并对列表元素进行更改。我想在一行中进行此更改,硬编码每个列表的名称不是一个选项:

a <- list(thing1=1:5,
          thing2=6:10)

b <- list(thing1=1:5,
          thing2=6:10)

for(list in c("a","b"){

   an_element <- paste(list,
                       "$thing1",
                      sep="") # i.e "a$thing1"

    assign(an_element,20:25) # change value of element thing1 in lists

}

get("a$thing1") # shows change

a$thing1 # does not show change
a使用您的示例:

a <- list(thing1=1:5,
          thing2=6:10)
a找到了解决方案

a <- list(thing1=1:5,
          thing2=6:10)

b <- list(thing1=1:5,
          thing2=6:10)

c <- list(thing1=1:5,
          thing2=6:10)

for(list in c("a","b","c")){

  assign("tempList",list)

  tempList$thing1 <- 6:10

  assign(list,tempList)

}

a$thing1 # shows change
b$thing1
c$thing1

a是否尝试使用字符串“a$thing1”替换
a$thing1
中的值?您的
assign
创建一个名为
a$thing1
的向量(尝试键入'a$thing1`)。你到底想达到什么目的?可能有一种比赋值更好的方法。是的,我试图通过提供一个表示该对象的字符串来更改任意对象中的值。在我的问题中,将有许多列表,我需要通过循环对这些对象进行操作。编辑一个列表很容易,我需要确定哪个列表正在被编辑,动态的,由循环提供。这里的问题是我们需要处理任意一组列表。我们不能硬编码列表'a',这些列表必须像在循环中一样动态操作。“a”可能是一个包含所有列表的列表吗?你需要在某个时候参考这些列表,我不确定你找到了什么方法。可以接受。是的,那很好。有名字的列表,甚至是列表本身我不明白你说“不用硬编码所有列表的名字”是什么意思。for循环使用的c(“a”、“b”、“c”)不是一个硬编码的列表名称列表吗?我的说法很糟糕。我的意思是硬编码的重新分配
for(i in 1:length(anames)) {
  a[[anames[i]]] <- 5*(i+2)+1:5
  print(a[[anames[i]]])
}
# [1] 16 17 18 19 20
# [1] 21 22 23 24 25
for(i in 1:length(anames)) {
  a[[i]] <- 5*(i+2)+1:5
  print(a[[anames[i]]])
}
# same result
b <- lapply(a, function(x) {
  x+15
})
b$thing1
#[1] 16 17 18 19 20
a <- list(thing1=1:5,
          thing2=6:10)

b <- list(thing1=1:5,
          thing2=6:10)

c <- list(thing1=1:5,
          thing2=6:10)

for(list in c("a","b","c")){

  assign("tempList",list)

  tempList$thing1 <- 6:10

  assign(list,tempList)

}

a$thing1 # shows change
b$thing1
c$thing1