为什么 mutate(row_number()) 对于 data.tables 会失败?

Jak*_*her 6 r dplyr data.table

当我尝试在 data.table 上使用row_number()fromdplyr时,它会引发错误。下面是一个例子:

library(dplyr)
library(data.table)
mine <- data.table(a = 1:10)
mine %>% mutate(row_number())
# Error in rank(x, ties.method = "first", na.last = "keep") : 
#   argument "x" is missing, with no default
Run Code Online (Sandbox Code Playgroud)

任何想法为什么会发生这种情况?

chr*_*aho 3

dplyr::row_number()函数有一个强制参数,该参数应该是要为其执行行号的列的名称。

在你的例子中,你应该这样写:

library(dplyr)
library(data.table)
mine <- data.table(a = 1:10) %>% 
    mutate(row_number(a))
Run Code Online (Sandbox Code Playgroud)

因为a是您要添加的列的名称row_number()。如果没有这个,R 就会抛出错误argument "x" is missing, with no default

不过,我建议使用该tibble::rowid_to_column()功能。更干净了。

library(dplyr)
library(data.table)
library(tibble)
mine <- data.table(a = 1:10) %>% 
    rowid_to_column()
Run Code Online (Sandbox Code Playgroud)

我希望这有帮助。