为我在R中的案例改进for循环的更好方法?

为我在R中的案例改进for循环的更好方法?,r,R,概率统计: 数据集包含两列mstr_程序_列表,Loc_cat和600000。Loc_cat列包含缺失和未缺失的单元格。其他栏目没有NA。对于mstr_program_列表中的每个prog,需要查找与该程序相关联的loc cat总数,非缺失行的百分比,并在非缺失行中查找其划分类别的计数 例如:对于未知程序-总行数=3,loc_cat中未缺失的行数为1,因此%为(2/3)*100,划分为两个类别的数量(剩余:全部)(剩余:lim) 下面的代码花费了很多时间。事实上,结果并没有显现出来。有人能帮我改

概率统计: 数据集包含两列mstr_程序_列表,Loc_cat和600000。Loc_cat列包含缺失和未缺失的单元格。其他栏目没有NA。对于mstr_program_列表中的每个prog,需要查找与该程序相关联的loc cat总数,非缺失行的百分比,并在非缺失行中查找其划分类别的计数

例如:对于未知程序-总行数=3,loc_cat中未缺失的行数为1,因此%为(2/3)*100,划分为两个类别的数量(剩余:全部)(剩余:lim)

下面的代码花费了很多时间。事实上,结果并没有显现出来。有人能帮我改进代码吗。根据我的观点,这个代码的问题是添加向量

经过研究,我知道了向vector添加值,而不是使用append和go with c()


v您能为您的问题添加一个小示例数据集吗?即使是
头部(数据)
也不错。看起来代码可能有很多问题,但如果不知道变量是什么,很难判断。mstr_程序列表是否有NA?此变量中的所有未知数都应分组?mstr\U program\U list没有任何NA。Unknown是该列中的字符串。只有loc_猫不同意这个问题。让它更清晰我会尝试使用*apply重写。我不完全理解您想要得到什么(最好为您添加的数据添加预期结果),但我认为您的程序没有按照您的想法执行。你真的只想要最后的值吗?
   > head(data)
        L.Name                   mstr_program_list            loc_cat
    1  Six J'SGroup                   Unknown              <NA>
    2  Bj's- Maine             Roasted Tomat               Rests: Full
    3  Bj's- Maine                     Unknown             Rests: Full
    4  Brad's Q Q                      Unknown             Rests: lim
     mstr_prog   total_count    %good(non missing rows)   Number of loc_cat
     Unknown         3                      66.7                     2
v <- c(v, 'y') # adding elements into a vector
data          <- read.csv("MgData.csv",header=T, na.strings="", colClasses = classes,      nrows = 600338,comment.char="")                           ## import data.
data_NoNull   <- na.omit(data)
mpl_unique    <- unique(data$mstr_program_list)
mas_Prog_List <- as.character()
loc_Count     <- as.numeric()
per_Seg       <- as.numeric()
num_Seg       <- as.numeric()
for(i in 1:length(mpl_unique)) {
    l_t <- length(data$mstr_program_list[data$mstr_program_list == i])   # loc_cat specific to prog
    l_g <- length(data_NoNull$mstr_program_list[data_NoNull$mstr_program_list == i])    ## to know filled ones excluding empty
    s <- subset(data_NoNull, mstr_program_list==i, select =c(loc_cat))
    if((any(i == mas_Prog_List)) == FALSE) {
        no_Seg <- nrow(unique(s))
        mas_Prog_List <- c(mas_prog_list, i)                 # Adding values to vector
        loc_Count     <- c(loc_count, l_t)
        perct_Seg     <- ((l_g/l_t)*100)
        per_Seg       <- c(per_Seg, perct_seg)
        Num_Seg       <- c(Num_Seg, no_seg)
        }
       }
      }
 Seg_analysis <- data.frame(mas_Prog_List, loc_Count, per_Seg, num_Seg)