相关疑难解决方法(0)

如何从列表中删除元素?

我有一个列表,我想从中删除一个元素.我怎样才能做到这一点?

我已经尝试查找我认为这个功能的明显名称将在参考手册中,我没有找到任何合适的东西.

indexing r list

252
推荐指数
10
解决办法
38万
查看次数

有效地删除列表和所有子列表中的所有NULL值

请考虑以下列表:

> l1 <- list(NULL,1,2,list(NULL,3,list(NULL,4)))
> str(l1)
List of 4
 $ : NULL
 $ : num 1
 $ : num 2
 $ :List of 3
  ..$ : NULL
  ..$ : num 3
  ..$ :List of 2
  .. ..$ : NULL
  .. ..$ : num 4
Run Code Online (Sandbox Code Playgroud)

要从NULL第一级删除值,只需调用即可

l1[vapply(l1,is.null,logical(1L))] <- NULL
Run Code Online (Sandbox Code Playgroud)

现在我想删除所有NULL级别的所有值,我想出了以下代码.

list.clean <- function(.data, fun = is.null, recursive = FALSE) {
  if(recursive) {
    .data <- lapply(.data, function(.item) {
      if(is.list(.item)) list.clean(.item, fun, TRUE)
      else .item
    })
  }
  .data[vapply(.data,fun,logical(1L))] …
Run Code Online (Sandbox Code Playgroud)

null r list

16
推荐指数
1
解决办法
1031
查看次数

使用jsonlite或其他方法从R编码JSON表达式

我正在使用的API需要我发送一条JSON消息,如:

y <- '[{"a":1, "b":"select", "c":["A", "B", "C"]}, 
       {"a":2, "b":"text"},
       {"a":3, "b":"select", "c":["D", "E", "F", "G"]}]'
Run Code Online (Sandbox Code Playgroud)

请注意,如果"b" : "select"有另一个变量c,其值为数组.

当我尝试运行fromJSON(y)(在jsonlite包中)时,我得到data.frame第3列是列表的位置:

> z <- fromJSON(y) 
> class(z)
[1] "data.frame"
> z %>% glimpse()
Observations: 3
Variables: 3
$ a (int) 1, 2, 3
$ b (chr) "select", "text", "select"
$ c (list) A, B, C, NULL, D, E, F, G
Run Code Online (Sandbox Code Playgroud)

但是当我将其转换回JSON (这是我想发送给API的格式)时,c变量出现在它不应该的位置.

[{"a":1,"b":"select","c":["A","B","C"]},
 {"a":2,"b":"text","c":{}},
 {"a":3,"b":"select","c":["D","E","F","G"]}] …
Run Code Online (Sandbox Code Playgroud)

json r dataframe jsonlite

2
推荐指数
1
解决办法
443
查看次数

标签 统计

r ×3

list ×2

dataframe ×1

indexing ×1

json ×1

jsonlite ×1

null ×1