我有一个数据帧,我想要计算所有列的成对比例(例如,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循环出了点问题。但我不明白问题所在。
答案 0 :(得分:1)
假设要求是计算对row1 / row2,row3 / row4等的比率....
试试这个:
options
其中df是您的data.frame