使用 for 循环创建间隔
create interval with for loop
我们可以使用cut创建区间数据进一步作为标签,也可以利用for循环
剪切函数
perform_vec <- perform[["Performance"]]
perf_labs <- c(1,2,3,4,5,6)
perfcut <- cut(perform_vec,breaks = c(0,25,49.99,69.99,84.99,94.99,101),right = F, labels = perf_labs)
perfcut_df <- as.data.frame(cbind(perform_vec, perfcut))
perfcut_df$perfcut <- factor(perfcut_df$perfcut, levels = c(1,2,3,4,5,6), labels = c("D","C","B-","B","A-","A"))
结果如下:
我想用for循环创建它
在解决方案 #1 中,我们在一个循环中计算每个输入值超过多少 breaks
,然后使用它来索引到 labels
。解决方案 #2 做同样的事情,但使用 outer
而不是循环。解决方案 #3 使用 cut
.
# input
x <- c(30, 50, 80)
breaks <- c(0,25,49.99,69.99,84.99,94.99,101)
labels <- c("D","C","B-","B","A-","A")
# solutions
# 1 - loop
lev <- 0 * x
for (b in breaks) lev <- lev + (x > b)
factor(labels[lev], levels = labels)
## [1] C B- B
## Levels: D C B- B A- A
# 2 - outer
factor(labels[rowSums(outer(x, breaks, `>`))], levels = labels)
## [1] C B- B
## Levels: D C B- B A- A
# 3 - cut
cut(x, breaks, labels)
## [1] C B- B
## Levels: D C B- B A- A
我们可以使用cut创建区间数据进一步作为标签,也可以利用for循环
剪切函数
perform_vec <- perform[["Performance"]]
perf_labs <- c(1,2,3,4,5,6)
perfcut <- cut(perform_vec,breaks = c(0,25,49.99,69.99,84.99,94.99,101),right = F, labels = perf_labs)
perfcut_df <- as.data.frame(cbind(perform_vec, perfcut))
perfcut_df$perfcut <- factor(perfcut_df$perfcut, levels = c(1,2,3,4,5,6), labels = c("D","C","B-","B","A-","A"))
结果如下:
我想用for循环创建它
在解决方案 #1 中,我们在一个循环中计算每个输入值超过多少 breaks
,然后使用它来索引到 labels
。解决方案 #2 做同样的事情,但使用 outer
而不是循环。解决方案 #3 使用 cut
.
# input
x <- c(30, 50, 80)
breaks <- c(0,25,49.99,69.99,84.99,94.99,101)
labels <- c("D","C","B-","B","A-","A")
# solutions
# 1 - loop
lev <- 0 * x
for (b in breaks) lev <- lev + (x > b)
factor(labels[lev], levels = labels)
## [1] C B- B
## Levels: D C B- B A- A
# 2 - outer
factor(labels[rowSums(outer(x, breaks, `>`))], levels = labels)
## [1] C B- B
## Levels: D C B- B A- A
# 3 - cut
cut(x, breaks, labels)
## [1] C B- B
## Levels: D C B- B A- A