gpt4 book ai didi

r - 单个菜单的多个输出

转载 作者:行者123 更新时间:2023-12-04 12:30:17 24 4
gpt4 key购买 nike

假设我有一个这样的数据框:

Class  Sex  Score
A M 90
A F 90
A F 85
A M 85
A M 80
A M 70
A F 70
A M 60
B F 90
B M 90
B M 75
B F 70

我想要一个菜单​​来选择类(class)和性别并获得平均值。现在在我的真实数据框中,我使用了两个菜单

i <- menu(c("A","B"), graphics=TRUE, title="Choose class")
j <- menu(c("M","F"), graphics=TRUE, title="Choose sex")
df.1 <- df.1[df.1$Class==i, ]
df.1 <- df.1[df.1$Sex==j, ]

但是当变量比 ClassSex 多得多时,单击多个菜单似乎很烦人,因为它们可以在一个窗口中全部选择。这在 R 中可能吗?

最佳答案

这可以修改,但基本思想是创建显示的所有选项的交集,并且只使用一个菜单。

dat <- read.table(textConnection("Class  Sex  Score
A M 90
A F 90
A F 85
A M 85
A M 80
A M 70
A F 70
A M 60
B F 90
B M 90
B M 75
B F 70
"), header = TRUE)

vals <- interaction(dat$Class, dat$Sex)
opts <- as.character(unique(vals))
choice <- menu(opts, graphics = TRUE, title = "Choose Class.Sex")
dat[vals == opts[choice],]

这是将这个想法包装成一个函数

# data - dataset to subset
# cols - either character vector with names of the columns
# or numeric vector with column numbers
# graphics - logical. Should the menu be graphical?
subsetMenu <- function(data, cols, graphics = TRUE){
if(is.numeric(cols)){
colnames <- colnames(data)[cols]
}else{
colnames <- cols
}

vals <- interaction(data[,cols])
opts <- as.character(unique(vals))
title <- paste("Choose", paste0(colnames, collapse = "."))

choice <- menu(opts, graphics = graphics, title = title)
data[vals == opts[choice],]
}

df1 <- subsetMenu(dat, c("Class", "Sex"), graphics = T)
df2 <- subsetMenu(dat, c("Class", "Sex"), graphics = F)
df3 <- subsetMenu(dat, 1:2)
df4 <- subsetMetu(mtcars, c("cyl", "gear"))

关于r - 单个菜单的多个输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16513068/

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