簡體   English   中英

替換列表中的數組元素(R)

[英]Replacing elements of arrays within a list (R)

好的,這是情況:我有以下數組列表:

N <- c('A', 'B', 'C')
ll <- sapply(N, function(x) NULL)
ll <- lapply(ll, function(x) assign("x", array(0, dim = c(2,2)))) .

現在我想用一個給定的數量替換那些數組中位置[1,1]的元素,比如說10.我正在做什么, 這里跟着這個問題。 也就是說,我正在做以下事情:

x <- lapply(ll, function(x) {x[1,1] <- 10}),

這應該使xa列出三個2x2數組,其中[1,1]元素等於10,所有其他數組等於0.而不是那樣,我看到這個:

> x <- lapply(ll, function(x) {x[2,1] <- 10})
> x
$A
[1] 10

$B
[1] 10

$C
[1] 10

關於這里發生了什么的任何想法?

你沒有返回整個矢量。 所以,返回最后一個參數。 就是這樣,當你這樣做的時候

x <- lapply(ll, function(x) {x[2,1] <- 10})

你打算說:

x <- lapply(ll, function(x) {x[2,1] <- 10; return(x)})

如果未指定返回值,則默認返回最后指定的值,即10.而應使用return(x)或等效x ,如下所示:

x <- lapply(ll, function(x) {x[2,1] <- 10; x})
# $A
#      [,1] [,2]
# [1,]    0    0
# [2,]   10    0
# 
# $B
#      [,1] [,2]
# [1,]    0    0
# [2,]   10    0
# 
# $C
#      [,1] [,2]
# [1,]    0    0
# [2,]   10    0

雖然apply通常是首選,但這里有一個替代方案,只是為了有一個:

for (i in 1:3) ll[[i]][2,1] <- 10

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM