R 列出可能存在或不存在的对象

R 列出可能存在或不存在的对象,r,list,R,List,是否有一个选项可以从对象构建列表,包括那些不一定存在的对象(因此应该忽略) 例子 my_df 1 a #>2 b #>3 c #>4d #>5 e #>6楼 #>7克 #>8小时 #>9 i #>10 j #> #> [[2]] #> [1] 1 2 3 4 5 6 7 8 9 10 #> #> [[3]] #> [,1] [,2] [,3] #> [1,] 1 4 7 #> [2,] 2 5 8 #> [3,] 3

是否有一个选项可以从对象构建列表,包括那些不一定存在的对象(因此应该忽略)

例子
my_df 1 a
#>2 b
#>3 c
#>4d
#>5 e
#>6楼
#>7克
#>8小时
#>9 i
#>10 j
#> 
#> [[2]]
#>  [1]  1  2  3  4  5  6  7  8  9 10
#> 
#> [[3]]
#>      [,1] [,2] [,3]
#> [1,]    1    4    7
#> [2,]    2    5    8
#> [3,]    3    6    9
列表(我的对象、我的向量、我的矩阵、我的对象不存在)
#>eval(expr、envir、enclose)中出错:未找到对象“我的对象不存在”
由(v0.3.0)于2021-01-26创建

期望输出
列表(my_df,my_vec,my_matrix,my_object\u doesn\u存在)
将返回与
列表(my_df,my_vec,my_matrix)相同的输出。

类似的内容如何

my_df 1 a
#>2 b
#>3 c
#>4d
#>5 e
#>6楼
#>7克
#>8小时
#>9 i
#>10 j
#> 
#> [[2]]
#>  [1]  1  2  3  4  5  6  7  8  9 10
#> 
#> [[3]]
#>      [,1] [,2] [,3]
#> [1,]    1    4    7
#> [2,]    2    5    8
#> [3,]    3    6    9
res[[1]]
#>一些价值观
#>1A
#>2 b
#>3 c
#>4d
#>5 e
#>6楼
#>7克
#>8小时
#>9 i
#>10 j
#> 
#> [[2]]
#>  [1]  1  2  3  4  5  6  7  8  9 10
#> 
#> [[3]]
#>      [,1] [,2] [,3]
#> [1,]    1    4    7
#> [2,]    2    5    8
#> [3,]    3    6    9
#> 
#> [[4]]
#>[1]NA
#只取非NA值!
res[!is.na(res)]
#> [[1]]
#>一些价值观
#>1A
#>2 b
#>3 c
#>4d
#>5 e
#>6楼
#>7克
#>8小时
#>9 i
#>10 j
#> 
#> [[2]]
#>  [1]  1  2  3  4  5  6  7  8  9 10
#> 
#> [[3]]
#>      [,1] [,2] [,3]
#> [1,]    1    4    7
#> [2,]    2    5    8
#> [3,]    3    6    9

由(v0.3.0)创建于2021-01-26。您可以使用
mget
过滤器

tt <- Filter(Negate(is.null), mget(c("my_df", "my_vec", "my_matrix"
 , "my_object_doesnt_exist"), ifnotfound=list(NULL)))

identical(unname(tt), list(my_df, my_vec, my_matrix))
#[1] TRUE
tt与
存在()


objects在一次调用中使用@David nice solution和
tidyverse

library(tidyverse)
map(c("my_df", "my_vec", "my_matrix", "my_object_doesnt_exist"),
    function(x) if (exists(x)) get(x) else NA) %>% 
  keep(~ all(!is.na(.x))) 
# [[1]]
#    some_values
# 1            a
# 2            b
# 3            c
# 4            d
# 5            e
# 6            f
# 7            g
# 8            h
# 9            i
# 10           j

# [[2]]
#  [1]  1  2  3  4  5  6  7  8  9 10

# [[3]]
#      [,1] [,2] [,3]
# [1,]    1    4    7
# [2,]    2    5    8
# [3,]    3    6    9

谢谢我希望它没有超出本文的范围——我想将您的代码包装在一个函数
build\u list()
中,该函数将接收对象并返回列表。但是,它只返回名称向量<代码>生成列表尝试:
生成列表
library(tidyverse)
map(c("my_df", "my_vec", "my_matrix", "my_object_doesnt_exist"),
    function(x) if (exists(x)) get(x) else NA) %>% 
  keep(~ all(!is.na(.x))) 
# [[1]]
#    some_values
# 1            a
# 2            b
# 3            c
# 4            d
# 5            e
# 6            f
# 7            g
# 8            h
# 9            i
# 10           j

# [[2]]
#  [1]  1  2  3  4  5  6  7  8  9 10

# [[3]]
#      [,1] [,2] [,3]
# [1,]    1    4    7
# [2,]    2    5    8
# [3,]    3    6    9