【问题标题】:Adding a vector of T/F to a list of vectors in R将 T/F 的向量添加到 R 中的向量列表中
【发布时间】:2020-02-07 11:04:38
【问题描述】:

我有一个名为XY 的向量列表。我想向这两个向量中的每一个添加一个名为 H 的新元素,这将显示为 H = TRUE or FALSE

但是,我的输出没有显示TRUEFALSE,而是显示10。如何在当前输出中显示TRUEFALSE

H = c(T, F) # The element to be added

L <- list(X = c(K = 22, M = 39), Y = c(K = 54, M = 65)) # List to add to

Map(c, L, H = H) # My current solution

# Current OUTPUT:
# $X
#  K     M     H 
#  22   39     1   # instead of `TRUE`

# $Y
#  K     M     H 
# 54    65     0  # instead of `FALSE`

【问题讨论】:

  • 使用 as.logical() 从 0/1 到 FALSE/TRUE
  • 有什么不好的?你是怎么写的?也许列表有一些限制,它们都需要是相同的类型?我觉得我在某个地方读过……虽然不确定

标签: r list function loops vector


【解决方案1】:

你有这个问题是因为列表的每个元素都是一个向量,而一个向量是相同类型元素的集合。所以使用向量是不可能得到你想要的,布尔值总是会被​​转换为数字,因为这是已经存在的向量的类型。

但你可以在列表中使用列表

L <- list(X = list(K = 22, M = 39), Y = list(K = 54, M = 65))
Map(c, L, H = H)

【讨论】:

    【解决方案2】:

    我们还可以将vectoras.list 从初始数据中转换为list 并连接(c),因为vector 不允许多个types

    Map(c, lapply(L, as.list), H = H)
    

    【讨论】:

    • @rnorouzian 好像已经回答了
    • 希望你考虑this question?
    • @rnorouzian 我看到了关于那个问题的答案
    • 如您所见,这个获得了很多支持,我没有看到任何问题,但有解决方案吗?
    猜你喜欢
    • 1970-01-01
    • 2021-04-17
    • 2015-03-31
    • 1970-01-01
    • 1970-01-01
    • 2014-07-06
    • 1970-01-01
    • 2012-02-20
    • 1970-01-01
    相关资源
    最近更新 更多