Tôi có một hàm trả về danh sách danh sách. Tôi muốn tách kết quả của danh sách. Các yếu tố đầu tiên từ các yếu tố thứ hai. Dưới đây là một ví dụ:Cách tách đầu ra của danh sách trong R
x1 <- replicate(4,0.5)
x2 <- replicate(4,0.7)
x <- list(x1,x2)
y <- list(0.5,0.6,0.3,0.4)
myfu <- function(x,y){
out <- list()
out$y <- lapply(1:4, function(i){lapply(1:2, function(j) y[[i]]*x[[j]])})
return(out)
}
Hàm này trả về này:
$y
$y[[1]]
$y[[1]][[1]]
[1] 0.25 0.25 0.25 0.25
$y[[1]][[2]]
[1] 0.35 0.35 0.35 0.35
$y[[2]]
$y[[2]][[1]]
[1] 0.3 0.3 0.3 0.3
$y[[2]][[2]]
[1] 0.42 0.42 0.42 0.42
$y[[3]]
$y[[3]][[1]]
[1] 0.15 0.15 0.15 0.15
$y[[3]][[2]]
[1] 0.21 0.21 0.21 0.21
$y[[4]]
$y[[4]][[1]]
[1] 0.2 0.2 0.2 0.2
$y[[4]][[2]]
[1] 0.28 0.28 0.28 0.28
Câu hỏi của tôi là, Làm thế nào tôi có thể tách tất cả y[[i]][[1]]
từ khắp nơi y[[i]][[2]]
. Tức là, tôi muốn có kết quả như sau:
$y
$y[[1]]
$y[[1]][[1]]
[1] 0.25 0.25 0.25 0.25
$y[[2]]
$y[[2]][[1]]
[1] 0.3 0.3 0.3 0.3
$y[[3]]
$y[[3]][[1]]
[1] 0.15 0.15 0.15 0.15
$y[[4]]
$y[[4]][[1]]
[1] 0.2 0.2 0.2 0.2
và tương tự cho yếu tố thứ hai.
Cảm ơn bạn rất nhiều vì đã giúp đỡ của bạn. Nó thực sự tuyệt vời. Chúng ta có thể sử dụng nó bên trong chức năng? – Alice
@Alice Vâng, bạn có thể làm 'out%>% map (transpose)' và sau đó gọi 'myfu (x, y)' – akrun
Tôi nghĩ rằng vấn đề là cách thực hiện chức năng 'lapply'. –