使用 dplyr::distinct() 时出现 R 错误的问题:"no applicable method for 'distinct_' applied to an object of class "c('double', 'numeric')""
Problem with R error when using dplyr::distinct(): "no applicable method for 'distinct_' applied to an object of class "c('double', 'numeric')""
这是我的示例数据框:
df.ex <- structure(
list(
id_1 = c(15796L, 15796L, 15799L, 15799L),
id_2 = c(61350L,
351261L, 61488L, 315736L),
days = c(30.5, 36.4854, 30.5, 30.5)
),
row.names = c(NA,-4L),
class = "data.frame",
.Names = c("id_1",
"id_2", "days")
)
我在 dplyr::distinct()
中收到此错误
Error in UseMethod("distinct_") : no applicable method for 'distinct_' applied to an object of class "c('double', 'numeric')"
令人困惑的是,每当我将数据框传递给函数并像这样指定列时,它都会起作用:distinct(df.ex, days)
。但是,如果我像这样创建感兴趣变量的向量:days_vec <- df.ex$days
并将向量作为参数传递给函数,如下所示:distinct(days_vec)
然后我会得到错误。
在我的实际代码中,我需要像这样在 dplyr 管道中使用 distinct
:
df.ex %>% summarise(distinct_values = distinct(days))
当然,这也行不通。有谁知道如何克服这个错误?
非常感谢,
彼得
编辑:对于我的实际问题,我需要总结 table,其中包含 days
的不同值的计数,这些值将按 id_1
分组,它看起来像这样:
result <- tibble(
id_1 = c(15796, 15799),
count_distinct_values = c(2, 1)
)
我原以为以下内容会有所帮助,但是 returns 另一个错误:
result <- df.ex %>% group_by(id_1) %>% summarise(count_distinct_values = count(distinct(., days)))
任何想法将不胜感激。
也许你可以试试
df.ex %>% group_by(id_1) %>% summarise(distinct_values = n_distinct(days))
您需要 distinct
中的 .
,因为它适用于 tbl
(或数据帧...),我添加 list
以显示所有不同的值,而不仅仅是第一个。
另一种方式:
df.ex %>% distinct(distinct_values = days)
根据问题进行相应更新。我认为这可以解决您的问题:
df.ex %>% group_by(id_1) %>% summarise(distinct_values = n_distinct(days))
这是我的示例数据框:
df.ex <- structure(
list(
id_1 = c(15796L, 15796L, 15799L, 15799L),
id_2 = c(61350L,
351261L, 61488L, 315736L),
days = c(30.5, 36.4854, 30.5, 30.5)
),
row.names = c(NA,-4L),
class = "data.frame",
.Names = c("id_1",
"id_2", "days")
)
我在 dplyr::distinct()
Error in UseMethod("distinct_") : no applicable method for 'distinct_' applied to an object of class "c('double', 'numeric')"
令人困惑的是,每当我将数据框传递给函数并像这样指定列时,它都会起作用:distinct(df.ex, days)
。但是,如果我像这样创建感兴趣变量的向量:days_vec <- df.ex$days
并将向量作为参数传递给函数,如下所示:distinct(days_vec)
然后我会得到错误。
在我的实际代码中,我需要像这样在 dplyr 管道中使用 distinct
:
df.ex %>% summarise(distinct_values = distinct(days))
当然,这也行不通。有谁知道如何克服这个错误?
非常感谢, 彼得
编辑:对于我的实际问题,我需要总结 table,其中包含 days
的不同值的计数,这些值将按 id_1
分组,它看起来像这样:
result <- tibble(
id_1 = c(15796, 15799),
count_distinct_values = c(2, 1)
)
我原以为以下内容会有所帮助,但是 returns 另一个错误:
result <- df.ex %>% group_by(id_1) %>% summarise(count_distinct_values = count(distinct(., days)))
任何想法将不胜感激。
也许你可以试试
df.ex %>% group_by(id_1) %>% summarise(distinct_values = n_distinct(days))
您需要 distinct
中的 .
,因为它适用于 tbl
(或数据帧...),我添加 list
以显示所有不同的值,而不仅仅是第一个。
另一种方式:
df.ex %>% distinct(distinct_values = days)
根据问题进行相应更新。我认为这可以解决您的问题:
df.ex %>% group_by(id_1) %>% summarise(distinct_values = n_distinct(days))