【问题标题】:R: for loop errorR:for循环错误
【发布时间】:2017-11-17 18:56:20
【问题描述】:

我正在尝试删除数据框列中的 NA 值,并尝试将结果向量 cbind 另一个数据框。这是我正在使用的代码:

for (x in df_wide[4:8]) {
  a <- df_wide[[x]][!is.na(df_wide[[x]])]
  df <- cbind(df, a)
}

但我收到此错误:

`Error in .subset2(x, i, exact = exact) : no such index at level 1`

我也尝试过使用apply 函数,但我得到了同样的错误。

`Error in .subset2(x, i, exact = exact) : no such index at level 1`
function (x, i, exact) 
if (is.matrix(i)) as.matrix(x)[[i]] else .subset2(x, i, exact = exact)

谁能解释我为什么会收到此错误以及如何解决?

如果想看数据框,请参考我的previous question.

提前致谢。

【问题讨论】:

    标签: r loops


    【解决方案1】:

    您只需要指定for (x in 4:8)。或者您可以引用列名,但现在您将列用作索引,这仅对整数列有用(如果这是您的目标)。

    不过,我认为这种方式不是解决问题的最佳方式。

    【讨论】:

      【解决方案2】:

      for (x in df_wide[4:8])

      将整个结果放在 x 中。所以 x 等于该列的整个向量。例如:x

      a

      是说你应该找到 df_wide[[]] 的值向量(没有标题),其中列号是 df_wide[4] 的整个向量(或 5 或 6 或 7)。但是列号(单数)不能是x向量中的所有值

      类似的方法来自this post you can search for using "omit NA values"

      df_out &lt;- df_wide[complete.cases(df_wide[,4:8]),]

      检查 4:8 列中的案例是否完整,然后返回 df_wide 中的所有列,其中行是完整案例。

      【讨论】:

        猜你喜欢
        • 2018-03-31
        • 2018-05-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-01-11
        • 1970-01-01
        • 1970-01-01
        • 2018-12-17
        相关资源
        最近更新 更多