【问题标题】:How to save the first element of a row from a list to a new variable?如何将行的第一个元素从列表保存到新变量?
【发布时间】:2017-03-21 09:20:05
【问题描述】:

我得到了一个列表变量“括号”,它的维度是 n x m,其中 n 表示行,m 表示给定行中的元素数。然而,n 是常数,而 m 是变化的。

> bracket
[[1]]
[1] 8

[[2]]
[1] 11 22

[[3]]
[1] 13 25

[[4]]
[1] 18

我希望看到以下内容:

> bracket
[1]  8 11 13 18

我该怎么做?感谢您的帮助!


使用sapply(bracket, '[[', 1)后,我遇到了一些麻烦。我收到以下错误:

FUN(X[[i]], ...) 中的错误:下标越界。如果我有一些没有值/NA的行怎么办?

【问题讨论】:

  • 我收到以下错误:FUN(X[[i]], ...) 中的错误:下标越界。如果我有一些没有值/NA的行怎么办?
  • @zx8754 这不是骗子。 OP 还有一些其他问题。
  • NA 无关紧要。空槽虽然会导致错误。要克服它们,您只需执行sapply(bracket[lengths(bracket) != 0], '[[', 1)
  • @ÜbelYildmar sapply() 正在深入研究每个元素的列表。试试sapply(bracket, '[', 1)
  • @ÜbelYildmar 你能让你的例子可重现吗?您当前的示例没有出现该问题,当我有一个空元素或一个只是 NA 的元素时,我没有得到您所做的错误。

标签: r


【解决方案1】:

我自己制作了一个数据示例来重现错误:

bracket <- list(8, c(11, 22), c(13, 25), 18)
sapply(bracket, '[[', 1) # will not reproduce the error
sapply(bracket, '[', 1)  # will not reproduce the error

bracket <- list(8, c(11, 22), numeric(0), c(13, 25), 18)
sapply(bracket, '[[', 1)  # will reproduce the error
sapply(bracket, '[', 1)   # gives NA

na.omit(sapply(bracket, '[', 1)) # omits the NAs

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-10-17
    • 1970-01-01
    • 1970-01-01
    • 2018-08-22
    • 2016-01-22
    • 2020-12-24
    • 2015-04-19
    • 2014-10-13
    相关资源
    最近更新 更多