Rgdata::left()和gdata::right()实际上是相同的函数,但名称不同并且完全按照它们应有的方式工作,还是我错误地使用了它们?
我有:mtcars
我想要:仅最后两列mtcars
(我知道我可以向mtcars[,(length(mtcars)-1):(length(mtcars))],但如果有更简单的方法,我为什么要这么做呢?)
我想要的看起来像这样:
gear carb
Mazda RX4 4 4
Mazda RX4 Wag 4 4
Datsun 710 4 1
Hornet 4 Drive 3 1
Hornet Sportabout 3 2
...
Run Code Online (Sandbox Code Playgroud)
看起来right(mtcars,2)可以实现这一点,但它却给出了
mpg cyl
Mazda RX4 21.0 6
Mazda RX4 Wag 21.0 6
Datsun 710 22.8 4
Hornet 4 Drive 21.4 6
Hornet Sportabout 18.7 8
...
Run Code Online (Sandbox Code Playgroud)
这与以下完全相同left(mtcars,2):
mpg cyl
Mazda RX4 21.0 6
Mazda RX4 Wag 21.0 6
Datsun 710 22.8 4
Hornet 4 Drive 21.4 6
Hornet Sportabout 18.7 8
...
Run Code Online (Sandbox Code Playgroud)
我的主要问题是,从数据框中获取最右边的 n 列的最简单方法是什么?我想要一些东西,希望是基础 R,不需要知道 的总列数mtcars。
gdata 中似乎存在一个奇怪/愚蠢的错误。如果您查看left/right的源代码,您会发现这两个函数都有一个UseMethod("left"). 据我了解,这意味着使用 data.frame 进行调用将导致调用left.data.frame. 事实上,如果我输入
right <- function(x, n=6L) UseMethod("right")
Run Code Online (Sandbox Code Playgroud)
然后right(mtcars,2)按预期工作。
| 归档时间: |
|
| 查看次数: |
182 次 |
| 最近记录: |