gpt4 book ai didi

r - 将行中的所有元素与行中的最大值相除 - 更快的方法

转载 作者:行者123 更新时间:2023-12-04 09:25:47 26 4
gpt4 key购买 nike

我需要缩放 dataframe .
我需要遵循的过程如下:

Divide all elements in a row with the max number in that row, unless that row contains number 1


我使用这种方法:
post_df <- df # original dataframe
for(i in 1:nrow(df)){
if (! 1 %in% df[i,]) {
post_df[i,] <- df[i,]/max(df[i,])
}
}
我想知道是否有一种更快的方法可以减少几秒钟的时间,因为我在一个大数据帧中运行它 86000 rows *500 cols .
例如
5 行,5 列
第 1 行:将所有元素除以 0.7
第 2 行:将所有元素除以 0.4
第 3 行:忽略
第 4 行:忽略
第 5 行:忽略
enter image description here

最佳答案

根据描述,我们只需要scale那些没有 1 的行。基于 rowSums 创建一个逻辑索引 ('i1')然后使用“i1”对数据集进行子集化,得到 max每行的 pmax , 与子集相除并分配回子集

i1 <- !rowSums(df==1)>0
df[i1,] <- df[i1,]/do.call(pmax, df[i1,])

数据
set.seed(24)
df <- as.data.frame(matrix(sample(1:8, 10*5, replace = TRUE), ncol=5))

关于r - 将行中的所有元素与行中的最大值相除 - 更快的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46953015/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com