r - 无法在 R 中区分 left() 和 right()

标签 r

R 的 gdata::left()gdata::right() 实际上是相同的函数,只是名称不同并且工作方式完全一样,还是我不正确地使用它们?

我有:mtcars

我想要:仅来自 mtcars

的最后 2 列

(我知道我可以用 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
...

看起来 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
...

这与 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
...

我的主要问题是,从数据框中获取最右边的 n 列的最简单方法是什么?我想要一些东西,希望是基于 R 的东西,它不需要知道总数mtcars 的列。

最佳答案

gdata 中似乎有一个奇怪/愚蠢的错误。如果您查看 left/right 的来源您会看到这两个函数都获得了 UseMethod("left")。据我所知,这意味着调用 data.frame 中的任何一个都会导致调用 left.data.frame。事实上,如果我输入

right <- function(x, n=6L) UseMethod("right")

然后 right(mtcars,2) 按预期工作。

关于r - 无法在 R 中区分 left() 和 right(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56808297/

相关文章:

r - 警告消息 : in rbindlist(allargs) : NAs introduced by coercion: possible bug in data. 表?

R 软件直方图,包含所有打印的 x 值

r - 识别数据框中的重复列

r - 如何使用R在数据帧的多列上运行tapply()?

R : replace only part of a pattern 中的正则表达式

r - 简化循环计算

r - CAPM.jensenAlpha 不适用于 Ubuntu

r - lapply'd geoms 失去了因子排序

r - 使用循环时的 tbl_df 和 data.frame 差异

database - 在 R DBI 中绑定(bind)变量