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