【问题标题】:Return a list from a list, where every column of every data frame is of type character从列表中返回一个列表,其中每个数据框的每一列都是字符类型
【发布时间】:2021-05-19 06:18:14
【问题描述】:

这是我们可以使用的列表:

list1 <- list(L1 = c(a = "abc", b = "bca"),
              L2 = c(a = 1, b = 2))

在这种情况下,我需要一个列表,它只包含满足条件的列表,所以 L1. 这是我可以手动检查的方法,但我不知道如何进一步。

class(list1[[1]][[1]])
class(list1[[1]][[2]])
class(list1[[2]][[1]])
class(list1[[2]][[2]])

【问题讨论】:

  • 即使你有一个像L1 = c(a = "abc", b = 1) 这样的向量,两个元素都是字符,因为整数会被强制转换为字符串。

标签: r list filter


【解决方案1】:

sapply 中检查is.character 并将列表子集化。

list1[sapply(list1, is.character)]
# $L1
#    a     b 
# "abc" "bca" 

【讨论】:

  • 啊,我知道问题出在哪里了。在我的原始列表中没有更多列表,而是小标题。我想这就是为什么我没有得到任何回报。那怎么办呢?将小标题更改为列表还是有其他方法?
  • @Dutschke 你可以试试rapply(list1, function(x) x[is.character(x)]),但是我建议用一个更接近你的实际数据的例子提出一个新问题。
【解决方案2】:

使用来自base RFilter

Filter(is.character, list1)

【讨论】:

    猜你喜欢
    • 2020-05-26
    • 1970-01-01
    • 1970-01-01
    • 2017-01-12
    • 2010-12-08
    • 1970-01-01
    • 1970-01-01
    • 2022-10-02
    • 1970-01-01
    相关资源
    最近更新 更多