按行填充空数据框,其中包含另一个数据框的成对比率行

时间:2017-05-16 12:31:41

标签: r function loops dataframe

我有一个数据帧,我想要计算所有列的成对比例(例如,row1 / row2,row3 / row4,row5 / row6等),并将计算结果写入新的数据帧。我决定将它包装在一个带有3个参数的函数中:

paired_row_rat=function(dataframe,rows,columns){
ratio_df=data.frame(matrix(nrow=rows/2,ncol=columns)) #creates new dataframe 
#where number of columns is the same as in dataframe used for 
#calculation, number of rows for paired ratios will be 2 times lower  

cln=colnames(dataframe)     #names of columns should be equal in both
colnames(ratio_df)=cln      #dataframes                        

i=seq(1,rows,by=2) #sequance for choosing the first row of calculation
j=i+1              #for choosing second row of calculation

  for (k in 1:nrow(ratio_df)){              #here as I am trying to fill new
    ratio_df[k,]=dataframe[i,]/dataframe[j,] #dataframe with ratios, 
  }                                          #the error appears
  return(ratio_df)
}
pmap(list(tula3,24,98),paired_row_rat)          
#runs the function for my dataframe with 24 rows and 98 columns

在结果数据框中,每列对所有行都有相同的值,我有R:

的警告
  

警告()   警告信息:   1:在[<-.data.frame*tmp*,k,,value = structure(list(...:     替换元素1有12行来替换1行

我已经搜索了很多可能的解决方案,但仍然无法解决这个问题。 for循环出了点问题。但我不明白问题所在。

用于计算的datafrfame(head(df)的结果):
datafrfame used for calculation (the result of head(df))

1 个答案:

答案 0 :(得分:1)

假设要求是计算对row1 / row2,row3 / row4等的比率....

试试这个:

options

其中df是您的data.frame