【问题标题】:R - sort() output missing a rowR - sort() 输出缺少一行
【发布时间】:2014-03-22 18:38:10
【问题描述】:

我有AB 如下: //edit// 我很困很困惑。这些不是数据帧。

> length(A)
[1] 490
> length(B)
[1] 17730

> str(A)
 num [1:490] 0.0113 -0.0106 0.2308 0.0435 0.2814 ...
> str(B)
 num [1:17730] 0.0118 0.0196 0.0344 0.0207 0.0566 ...

但由于某种原因,当我使用sort()

> length(sort(A))
[1] 490
> length(sort(B))
[1] 17729        #should be 17730

我不知道如何在这种特殊情况下生成可重现的示例,并且我不知道应该如何解决这个问题。我应该检查什么?

【问题讨论】:

  • 您使用的是nrow 还是NROW?这很奇怪!
  • 感谢您的关注!我正在使用nrow()
  • 嗯..我真的很困惑。我不明白sortnrow 是如何处理你声称是data.frames 的AB;更不用说弄清楚为什么你会输掉一排。我应该闭嘴。
  • 张贴str的A和B
  • 很抱歉。这不是一个数据框,所以不是nrow(),而是length() 我会记得在发帖之前先睡一觉,而不是相反。

标签: r sorting rows missing-data


【解决方案1】:

其他人指出sort() 采用向量而不是data.frame,但向量中是否有任何 NA? sort() 中的默认值是删除 NA:

v <- c(2, 1, NA)
v
#[1]  2  1 NA

length(sort(v))
#[1] 2
length(sort(v, na.last = T))
#[1] 3

如果要对 data.frame 进行排序,应使用 order() 而不是 sort()order() 具有与 sort() 相同的 na.last 参数,但默认为 TRUE 而不是 NA

df <- data.frame(vars = c(2, 1, NA))
df_n <- data.frame(df[order(df$vars),])

nrow(df_n)
#[1] 3

【讨论】:

  • &gt; length(sort(B, na.last=T)) [1] 17730 没错!现在我只需要弄清楚为什么首先会有一个NA。感谢您,对于 nrow()length() 之间的混淆感到抱歉
猜你喜欢
  • 2017-06-01
  • 1970-01-01
  • 2016-05-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-01-24
  • 2020-03-22
相关资源
最近更新 更多