【发布时间】:2019-04-04 20:11:28
【问题描述】:
我是新的 R 用户,但在制作循环时遇到了一些困难。我在下面制作了一个更简单的数据版本来说明我正在尝试做的事情。
#My Data:
set.seed(123)
x <- runif(10,1,100)
y <- sample(LETTERS[1:3],10,replace=TRUE)
#Then I made subsets of my data in a data frame:
df <- data.frame(x,y)
A <- subset(df, y=='A')
B <- subset(df, y=='B')
C <- subset(df, y=='C')
#I'm able to get the max and min of each subset like this:
print(paste('A Max = ',max(A$x))); print(paste('A Min = ',min(A$x)))
print(paste('B Max = ',max(B$x))); print(paste('B Min = ',min(B$x)))
print(paste('C Max = ',max(C$x))); print(paste('C Min = ',min(C$x)))
我想创建一个循环,自动找到每个子集的最大值和最小值。理想情况下,它会一次打印所有结果,最好使用“Max =”之类的标签。提前感谢您的帮助!
【问题讨论】:
-
你通常不会在 R 中使用循环来完成这样的事情。要么使用
dplyr::group_by,要么你可以使用split()和Map()与基础R。 -
一个选项是
by(df, df$y, function(x) setNames(range(x$x), c("Min", "Max")))