R:使用函数()创建数据帧

R:使用函数()创建数据帧,r,function,dataframe,R,Function,Dataframe,我正在尝试使用function()创建数据帧 情况:我有以下包含信息的数据框:代码、子代码和描述。每个代码代表一个行业,其中的子代码代表一个特定行业 > head(industries.split) Code Subcode Description 1 13 00 AEROSPACE 2 13 10 Engin

我正在尝试使用
function()
创建数据帧

情况:我有以下包含信息的数据框:代码、子代码和描述。每个代码代表一个行业,其中的子代码代表一个特定行业

    > head(industries.split)
  Code Subcode                                  Description
1   13      00                                AEROSPACE    
2   13      10    Engines, Components & Parts Manufacturers
3   13      20 Military & Commercial Aircraft Manufacturers
4   13      30        Missile & Missile Parts Manufacturers
5   13      40    Private & Business Aircraft Manufacturers
6   13      50                   Miscellaneous Aerospace   
> tail(industries.split)
    Code Subcode                                     Description
198   85      91                                 Wholesalers    
199   85      92                      Miscellaneous Companies   
200   86      00             REUTERS FUNDAMENTALS-SOURCED DATA  
201   86      10 Industrial/Commercial format; Industry group NA
202   86      20                   Utilities; Industry group NA 
203   86      30                  Bank format; Industry group NA
我想将代码与子代码结合起来,然后排除子代码。 为此,我编写了以下函数,其中name是行业的占位符,code是行业代码

Industry.Filter <- function(name, code){
  name <- industries.split %>%
    filter(Code == code)
  name[,1] <- paste(name[,1], name[,2],sep = "")
  name <- name[,-2]
}

Industry.Filter这是可以做到的,但可能不需要使用您当前使用的表单函数,即使在那时也不像您希望的那样容易。困难的原因是dplyr使用非标准评估,或

您正在使用管道(
%%>%%
)。回想一下,默认情况下管道的意思是“使用管道左侧的对象作为管道右侧函数的第一个参数”

所以如果你有一个函数的形式

Industry.Filter <- function(data, code)
Industry.Filter%
变异(代码=粘贴0(代码,子代码)%>%
选择(-子代码)
}
然后

aerospace <- df %>% Industry.Filter(13)
航空航天%工业过滤器(13)

应该给你你想要的。

有很多方法可以做到,但不推荐。做
航空航天有什么问题没有直接的问题。我只是想弄清楚,是否有办法将存储过程包含到函数中以节省一些时间。这不会节省你的时间。如果你尝试实现向调用环境写入变量。相信我们,除非您真的知道自己在做什么,否则这是您应该避免的。如果您想了解有关如何完成此操作的更多信息,请查看中的
?assign
R@AllanCameron有没有可能这只是一个关于写一个函数的困惑问题如果不是,我100%同意你的看法。
df <- df %>% Industry.Filter(code)
Industry.Filter <- function(data, code) {
 data %>%
   filter(Code == code) %>%
   mutate(Code = paste0(Code, Subcode) %>%
   select(-Subcode)
}
aerospace <- df %>% Industry.Filter(13)