【问题标题】:Using as.numeric, with functions and pipes in R使用 as.numeric,在 R 中使用函数和管道
【发布时间】:2015-07-14 19:12:14
【问题描述】:

我有一个看起来像这样的函数

 calc_df <- function(A_df, B_df){
     C_df <- filter(A_df, Type == "Animal") %>% 
         left_join(B_df)  %>%
         as.numeric(C$Count)

在我无法让最后一个石灰工作的地方,前 3 个工作正常,但我希望最后一行从函数中计算的新 df 中获取“计数”列并将其设为数字​​。 (现在是字符向量)

** 我必须在函数的末尾这样做,因为在过滤命令之前,Count 列包含字母,不能设为.numeric

【问题讨论】:

  • 请提供一些可重现的例子
  • 放入mutate?或transmutate

标签: r dplyr


【解决方案1】:

您似乎正在使用dplyr,并且您想要更改或添加一列。这就是dplyr::mutate 函数的作用。

替换

as.numeric(C$Count)

mutate(Count = as.numeric(Count))

用强制到数字的替换替换旧的非数字 Count 列。

至于你的代码为什么不起作用,有几个问题:

  • dplyr 用于处理数据帧,主要的 dplyr 函数(select、filter、mutate、summary、group_by、*_join、...)期望数据帧作为第一个参数,然后返回数据帧。通过将左连接的结果传递给as.numeric,您实际上是在调用as.numeric(unnamed_data_frame_from_your_join, C$Count),这显然没有多大意义。

  • 您试图在名为 C_df 的数据框的定义中引用名为 C 的数据框,我认为您的意思是相同的。这里有两个问题:(1) CC_df 的名称不匹配,以及 (2) 你不能在自己的定义中引用 C_df

【讨论】:

  • 非常感谢!额外感谢您解释一切,我现在知道我做错了什么.....
猜你喜欢
  • 2018-05-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-02-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多