如何使用 R 中的列表对向量中的所有值进行乘法和除法以及如何过滤列表
How to multiply and divide all values in a vector using a list in R and how to filter a list
我有一个列表(包含 83 个数据帧),我想将整个列表中的一个变量(即 Mn,请参见下面的 'practice' df)乘以 10000。然后我想找到 Mn 的最大值(在每个数据帧内),然后保留这个值(最大值)和它下面的所有值(在每个数据帧内)。除了这些 Mn 值,我还想保留数据框中所有其他变量的相应值(即 Ba、Sr)。对于所有变量,我想从每个数据框中排除高于这一点的所有值。完成此减少后,我想 return Mn 为其初始值(即,将 Mn 除以 10000)。
下面是练习脚本和我想达到的效果(Mn 事先乘以 10000,然后再除以 10000)。如有任何帮助,我们将不胜感激。
Ba <- c(1,1,1,2,2)
Sr <- c(1,1,1,2,2)
Mn <- c(1,1,2,1,1)
df <- data.frame(Ba, Sr, Mn)
df
# Ba Sr Mn
# 1 1 1 1
# 2 1 1 1
# 3 1 1 2
# 4 2 2 1
# 5 2 2 1
这就是我想在 R 中实现的:
Ba <- c(1,2,2)
Sr <- c(1,2,2)
Mn <- c(2,1,1)
df <- data.frame(Ba, Sr, Mn)
df
# Ba Sr Mn
# 1 1 1 2
# 2 2 2 1
# 3 2 2 1
我认为我的问题的过滤器部分的脚本是这样的:
MaxMn <- lapply(df, function(df){
df %>%
filter(cummax(invoke(pmax, cur_data())) == max(cur_data()))
})
到 select 从 Mn
列中的最大值开始的所有行,您可以使用 filter
作为 -
library(dplyr)
df %>% filter(row_number() >= which.max(Mn))
# Ba Sr Mn
#1 1 1 2
#2 2 2 1
#3 2 2 1
和slice
-
df %>% slice(which.max(Mn):n())
并且在基数 R 中 -
df[which.max(Mn):nrow(df), ]
您可以使用 lapply
/map
-
将其应用于数据帧列表
lapply(list_df, function(df) df %>% filter(row_number() >= which.max(Mn)))
我有一个列表(包含 83 个数据帧),我想将整个列表中的一个变量(即 Mn,请参见下面的 'practice' df)乘以 10000。然后我想找到 Mn 的最大值(在每个数据帧内),然后保留这个值(最大值)和它下面的所有值(在每个数据帧内)。除了这些 Mn 值,我还想保留数据框中所有其他变量的相应值(即 Ba、Sr)。对于所有变量,我想从每个数据框中排除高于这一点的所有值。完成此减少后,我想 return Mn 为其初始值(即,将 Mn 除以 10000)。
下面是练习脚本和我想达到的效果(Mn 事先乘以 10000,然后再除以 10000)。如有任何帮助,我们将不胜感激。
Ba <- c(1,1,1,2,2)
Sr <- c(1,1,1,2,2)
Mn <- c(1,1,2,1,1)
df <- data.frame(Ba, Sr, Mn)
df
# Ba Sr Mn
# 1 1 1 1
# 2 1 1 1
# 3 1 1 2
# 4 2 2 1
# 5 2 2 1
这就是我想在 R 中实现的:
Ba <- c(1,2,2)
Sr <- c(1,2,2)
Mn <- c(2,1,1)
df <- data.frame(Ba, Sr, Mn)
df
# Ba Sr Mn
# 1 1 1 2
# 2 2 2 1
# 3 2 2 1
我认为我的问题的过滤器部分的脚本是这样的:
MaxMn <- lapply(df, function(df){
df %>%
filter(cummax(invoke(pmax, cur_data())) == max(cur_data()))
})
到 select 从 Mn
列中的最大值开始的所有行,您可以使用 filter
作为 -
library(dplyr)
df %>% filter(row_number() >= which.max(Mn))
# Ba Sr Mn
#1 1 1 2
#2 2 2 1
#3 2 2 1
和slice
-
df %>% slice(which.max(Mn):n())
并且在基数 R 中 -
df[which.max(Mn):nrow(df), ]
您可以使用 lapply
/map
-
lapply(list_df, function(df) df %>% filter(row_number() >= which.max(Mn)))