R 如何对表格数据行上的迭代进行矢量化

R 如何对表格数据行上的迭代进行矢量化,r,dataframe,iteration,R,Dataframe,Iteration,我有一个表格数据集,作为数据帧从文件中读取。行的顺序不相关。数据没有作为该行唯一标识符的单个列,但是可以组合三列或四列来为该文件中的每个项创建唯一标识符 我想用一个分类变量向dataframe添加一列。每行的值是通过比较该特定行的一个或多个其他值得出的。这些值都是文本,因此无法以算术方式进行操作 我目前正在使用dataframe,因为它看起来很方便,但是我没有特别的格式附件,正如前面提到的,行的顺序并不重要 这是我想要应用于每一行的函数,这样我就可以生成一个值向量,作为一个新列绑定到数据帧 #i

我有一个表格数据集,作为数据帧从文件中读取。行的顺序不相关。数据没有作为该行唯一标识符的单个列,但是可以组合三列或四列来为该文件中的每个项创建唯一标识符

我想用一个分类变量向dataframe添加一列。每行的值是通过比较该特定行的一个或多个其他值得出的。这些值都是文本,因此无法以算术方式进行操作

我目前正在使用dataframe,因为它看起来很方便,但是我没有特别的格式附件,正如前面提到的,行的顺序并不重要

这是我想要应用于每一行的函数,这样我就可以生成一个值向量,作为一个新列绑定到数据帧

#input: line_item a single row from a dataframe with named columns
#output: a string
map_line_item_to_asset_class <- function(line_item){

  commodity <-  c('PHYSICAL INDEX FUTURE', 'PHYSICAL COMMODITY FUTURE','FINANCIAL COMMODITY FUTURE')
  equity <- c('ADR','COMMON STOCK', 'PFD', 'ETP', 'UNIT','REIT','EQUITY INDEX','EQUITY OPTION')
  fixed_income = c('ABS', 'CORP','SOVEREIGN DEBT','MUNI')
  other <- c('CASH')
  etp_fi_overrides <- c('EMLC')        

  asset_class <- line_item$INVESTMENT.TYPE
  if(line_item$INVESTMENT.TYPE %in% equity){
    asset_class <-'EQUITY'

    if(line_item$INVESTMENT %in% etp_fi_overrides)
      asset_class <- 'FIXED INCOME'
  } else{
    if(line_item$INVESTMENT.TYPE %in% fixed_income){
      asset_class <- 'FIXED INCOME'
    } else {
      if(line_item$INVESTMENT.TYPE %in% other) asset_class <- 'OTHER'
    } 
  }
  return(asset_class)
}
#输入:行(item)数据帧中具有命名列的单行
#输出:一个字符串

映射\行\项\到\资产\类您读过关于映射/应用如何工作的教程吗?你不明白什么?通过在曲面下使用循环来应用/映射工作。我知道应用程序是如何工作的,因为这就是我目前正在使用的,我想知道的是如何将此函数矢量化为一个学习练习。真正的矢量化需要一个计算,R可以在一个或多个向量上执行,而无需使用循环。对于向量
x,当有人说“只需向量化它”时,这个人的意思是“使用任何形式的
*apply()
函数,而不是
For()
循环。这显然不是真正的矢量化,但有时会导致更快的计算时间,因为人们倾向于在
for()
循环中增长对象,这是一种不好的做法,可以手动避免,但可以通过使用
*apply()
@LAP自动避免。对,没错。再加上可读性的额外优势。