程序问答   发布时间:2022-06-01  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了在 R 列表中用 0 替换 numeric(0)大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决在 R 列表中用 0 替换 numeric(0)?

开发过程中遇到在 R 列表中用 0 替换 numeric(0)的问题如何解决?下面主要结合日常开发的经验,给出你关于在 R 列表中用 0 替换 numeric(0)的解决方法建议,希望对你解决在 R 列表中用 0 替换 numeric(0)有所启发或帮助;

我有一个清单:

@H_514_5@myList
$`0`
$`0`$item1
numeric(0)

$`0`$item2
[1] 350

$`0`$item3
numeric(0)


$`1`
$`1`$item1
numeric(0)

$`1`$item2
[1] 56

$`1`$item3
numeric(0)

我在此列表中使用了 sapply 函数,但出现错误:

参数的“类型”(列表)无效

如何像其他项目一样将所有 numeric(0) 转换为 0?

解决方法

假设您只有 1 个深度列表,这是最短的解决方案

@H_514_5@my_list[lengths(my_list) == 0] <- 0

对于2个深度列表

@H_514_5@my_list <- lapply(my_list,function(X)x[lengths(X) == 0] <- 0)
,

如果深度未知或不相等,您可以使用递归函数:

f <- function(X) {
  if(is.list(X)) lapply(x,f)
  else ifelse(length(X) == 0,X)
}

f(myList)
#$`0`
#$`0`$item1
#[1] 0
#
#$`0`$item2
#[1] 350
#
#$`0`$item3
#[1] 0
#
#
#$`1`
#$`1`$item1
#[1] 0
#
#$`1`$item2
#[1] 56
#
#$`1`$item3
#[1] 0
#
#
#$`2`
#[1] 4
#
#$`3`
#[1] 0

数据:

@H_514_5@myList <- list(`0` = list(item1 = numeric(0),item2 = 350,item3 = numeric(0)),`1` = list(item1 = numeric(0),item2 = 56,`2` = 4,`3` = numeric(0))
,

使用purrr{​​{1}}

@H_514_5@modify()

或使用 newList <- purrr::modify(myList,~ if(length(.) == 0){ 0 } else { . })

base::lapply
,

使用嵌套的 lapply

lapply(my_list,function(X) lapply(x,function(X) ifelse(length(X) == 0,X)))
$`0`
$`0`$item1
[1] 0

$`0`$item2
[1] 350

$`0`$item3
[1] 0


$`1`
$`1`$item1
[1] 0

$`1`$item2
[1] 56

$`1`$item3
[1] 0

sapply内的lapply

lapply(my_list,function(X) sapply(x,X)))

$`0`
item1 item2 item3 
    0   350     0 

$`1`
item1 item2 item3 
    0    56     0 

或在内部和外部都使用 sapply

sapply(my_list,X)))

        0  1
item1   0  0
item2 350 56
item3   0  0

在名单上

@H_514_5@my_list <- list(`0` = list(item1 = numeric(0),item3 = numeric(0)))

大佬总结

以上是大佬教程为你收集整理的在 R 列表中用 0 替换 numeric(0)全部内容,希望文章能够帮你解决在 R 列表中用 0 替换 numeric(0)所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。