更改R中列表的特定组成部分

时间:2018-12-31 11:51:43

标签: r list

我尝试更改R中列表L[[2]]中的特定组件L。不幸的是,列表中的其他组件L[[1]]也发生了变化。下面是一个最小的工作示例:

 # initialize list L:
 L <- matrix(list( matrix(0,1,2) ), 2, 1)
 # show that L[[1]] = c(0,0):
 print(L[[1]][1,])
 #>[1] 0 0
 # only change L[[2]] into c(1,1):
 L[[2]][1,]   <- 1 
 # however L[[1]] has changed too to c(1,1):
 print(L[[1]][1,])
 #>[1] 1 1

(也许这是一个基本问题,因为我不是R的专家。)

针对Akrun的评论: 当我在R-studio的编辑器中一口气运行完整代码 时,L[[1]]中的更改就会发生。当我在命令行一次运行一次时运行这四个命令时,L[1]中的更改不会发生。对我来说似乎很奇怪。

1 个答案:

答案 0 :(得分:2)

有多种解决方法。就像我们在常规list中所做的那样,该结构有些复杂,难以进行更改。它是一个list,具有由matrix赋予的尺寸属性,并且由于listmatric es

而变得复杂

1) list对象是在matrix中创建的,它是list中的matrices。因此,我们可以基于对matrix的元素进行子集分配值,然后提取list组件以将其分配给1

L[2][[1]][] <- 1
print(L[[1]][1,])
#[1] 0 0

2)另一个选择是创建一个临时list对象并在list上分配值,稍后用更改后的{{ 1}}

matrix/list