R 将计数转换为百分比和指数分数的效率

R 将计数转换为百分比和指数分数的效率,r,R,我目前有以下代码,可以生成我想要的结果(Data\u Index和Data\u percentage) 输入数据摆脱“i”循环 使用apply来计算OAPer OAPer<-apply(TotalCount,1, function(x,tcs)x/tcs*100, tcs = TotalCountSum) OAPer这是您的全部代码。for循环不是必需的。apply也是如此。该划分可以通过完全分解矩阵来实现 d

我目前有以下代码,可以生成我想要的结果(
Data\u Index
Data\u percentage

输入数据摆脱“i”循环
使用apply来计算OAPer

 OAPer<-apply(TotalCount,1,
                   function(x,tcs)x/tcs*100,
                   tcs = TotalCountSum)

OAPer这是您的全部代码。for循环不是必需的。
apply
也是如此。该划分可以通过完全分解矩阵来实现

df <- Input_Data

total_count <- df[, 1]
total_sum   <- sum(total_count)

df <- df[, -1]

# equivalent of your for-loop
oa_per <- total_count/total_sum * 100
Data_Per_Row <- df/matrix(rep(total_count, each=5), ncol=5, byrow=T)*100
Data_Index_Row <- Data_Per_Row/oa_per * 100
names(Data_Per_Row) <- names(Data_Index_Row) <- names(df)

# rest of your code: identical
OldRange = max(Data_Index_Row) - min(Data_Index_Row)
NewRange = (1 - -1)
Data_Index = (((Data_Index_Row - min(Data_Index_Row)) * NewRange) / OldRange) + -1
Data_Percentages <- Data_Per_Row

df您应该对代码进行注释,以解释每个部分在做什么(甚至解释为什么要做这些)。没有多少人有耐心一步一步地运行您的代码来确定您打算让它做什么。这是一个很好的实践。对不起,我添加了一些注释(希望)来解释代码做得更好(+1)。您可以将注释包装成许多行,以便更容易阅读。但相对而言,遵循这一原则已经要好得多。
df <- Input_Data

total_count <- df[, 1]
total_sum   <- sum(total_count)

df <- df[, -1]

# equivalent of your for-loop
oa_per <- total_count/total_sum * 100
Data_Per_Row <- df/matrix(rep(total_count, each=5), ncol=5, byrow=T)*100
Data_Index_Row <- Data_Per_Row/oa_per * 100
names(Data_Per_Row) <- names(Data_Index_Row) <- names(df)

# rest of your code: identical
OldRange = max(Data_Index_Row) - min(Data_Index_Row)
NewRange = (1 - -1)
Data_Index = (((Data_Index_Row - min(Data_Index_Row)) * NewRange) / OldRange) + -1
Data_Percentages <- Data_Per_Row