Home > other >  Extract a variable from a nested list in r
Extract a variable from a nested list in r

Time:11-19

I have a function that returns an output in the form of a list as below. I want to extract only the variable "value" from it.

output
             [,1]   [,2]  
weights_used List,4 List,6
value        3      1  

I can extract the values individually, say

output[,1]$value
[1] 3

or

output[,2]$value
[1] 1

How can I extract the values 3 and 1 above together in a new list? (My actual output will have a lot more values). If I try output["value"] or output[["value"]], they produce a NULL

Also I could not understand why the variable name "value" disappears from unlist(output)..

> unlist(output)
  weight1   weight2   weight3   weight4             weight1   weight2   weight3   weight4   weight5   weight6           
0.1666667 0.1666667 0.1666667 0.5000000 3.0000000 0.1666667 0.1666667 0.1666667 0.1666667 0.1666667 0.1666667 1.0000000

Thanks!

> dput(output)
structure(list(list(weight1 = 0.166666666666667, weight2 = 0.166666666666667, 
    weight3 = 0.166666666666667, weight4 = 0.5), 3, list(weight1 = 0.166666666666667, 
    weight2 = 0.166666666666667, weight3 = 0.166666666666667, 
    weight4 = 0.166666666666667, weight5 = 0.166666666666667, 
    weight6 = 0.166666666666667), 1), .Dim = c(2L, 2L), .Dimnames = list(
    c("weights_used", "value"), NULL))

CodePudding user response:

What worked for me is shown below.. but I'm sure there's a more elegant way!

unlisted.output <- unlist(output)
as.list(unlisted.output[names(unlisted.output) == ""])

CodePudding user response:

Just follow the matrix format and select row with name 'value'.

output['value', ]
# [[1]]
# [1] 3
# 
# [[2]]
# [1] 1
  • Related