通过 factor() 并使用 argparse 中的变量对数据框的列重新排序
Reorder a column of a dataframe by factor() and using variable from argparse
我正在从命令行界面使用 argparse library to build a boxplot with ggpubr 库。我可以手动重新排序我感兴趣的特定列。
但是,我想使用 argparse 重新排序特定列。
我想不通,如何使用 df$args$reorder 名称。
不知何故,我需要自动化生产线
df$Population <- factor(df$Population, levels = c("Control", "American"))
至
get(args$reorder, df) <- factor(get(args$reorder, df), levels = c(args$new_order))
或
df$args$reorder <- factor(df$args$reorder, levels = c(args$new_order)
这是我试过的代码
#!/usr/local/bin/Rscript
suppressWarnings(library(argparse))
suppressWarnings(library(ggpubr))
parser <- ArgumentParser(description="Tools for making plot from command line")
parser$add_argument("--file", type="character", help="Input file")
parser$add_argument("--x-ax", type="character", help="x_axis value")
parser$add_argument("--y-ax", type="character", help="y_axis value")
parser$add_argument("--color", type="character", help="color by")
parser$add_argument("--facet-col", type="character", default=NULL, help="facet by")
parser$add_argument("--reorder", type="character", default=NULL, help="reorder a column")
parser$add_argument("--new_order", type="character", default=NULL, help="new orders for the items")
args <- parser$parse_args()
df <- read.csv(args$file)
head(df)
#Population Diet BloodPressure
#1 American Vegan 167
#2 American Vegan 160
#3 American Vegan 162
#4 American Vegan 165
#5 American Vegan 159
#6 American Vegan 177
#The line below can manually reorder the items in the column.
#df$Population <- factor(df$Population, levels = c("Control", "American"))
# I want to do something like this
#get(args$reorder, df) <- factor(get(args$reorder, df), levels = c(args$new_order))
fig <- ggboxplot(df, x = args$x_ax , y = args$y_ax,
facet.by = args$facet_col, fill = args$color, palette = "npg")
ggsave("reorder_factor.png")
我使用的数据是here
重新排序之前 image is like the following
重新排序后 image is like following
对不起各位!
我通过偶然的尝试和错误解决了它。
df[[args$reorder]] <- factor(df[[args$reorder]], levels = args$new_order)
虽然我不知道这是如何工作的。
编码愉快。
我正在从命令行界面使用 argparse library to build a boxplot with ggpubr 库。我可以手动重新排序我感兴趣的特定列。 但是,我想使用 argparse 重新排序特定列。 我想不通,如何使用 df$args$reorder 名称。
不知何故,我需要自动化生产线
df$Population <- factor(df$Population, levels = c("Control", "American"))
至
get(args$reorder, df) <- factor(get(args$reorder, df), levels = c(args$new_order))
或
df$args$reorder <- factor(df$args$reorder, levels = c(args$new_order)
这是我试过的代码
#!/usr/local/bin/Rscript
suppressWarnings(library(argparse))
suppressWarnings(library(ggpubr))
parser <- ArgumentParser(description="Tools for making plot from command line")
parser$add_argument("--file", type="character", help="Input file")
parser$add_argument("--x-ax", type="character", help="x_axis value")
parser$add_argument("--y-ax", type="character", help="y_axis value")
parser$add_argument("--color", type="character", help="color by")
parser$add_argument("--facet-col", type="character", default=NULL, help="facet by")
parser$add_argument("--reorder", type="character", default=NULL, help="reorder a column")
parser$add_argument("--new_order", type="character", default=NULL, help="new orders for the items")
args <- parser$parse_args()
df <- read.csv(args$file)
head(df)
#Population Diet BloodPressure
#1 American Vegan 167
#2 American Vegan 160
#3 American Vegan 162
#4 American Vegan 165
#5 American Vegan 159
#6 American Vegan 177
#The line below can manually reorder the items in the column.
#df$Population <- factor(df$Population, levels = c("Control", "American"))
# I want to do something like this
#get(args$reorder, df) <- factor(get(args$reorder, df), levels = c(args$new_order))
fig <- ggboxplot(df, x = args$x_ax , y = args$y_ax,
facet.by = args$facet_col, fill = args$color, palette = "npg")
ggsave("reorder_factor.png")
我使用的数据是here
重新排序之前 image is like the following
重新排序后 image is like following
对不起各位! 我通过偶然的尝试和错误解决了它。
df[[args$reorder]] <- factor(df[[args$reorder]], levels = args$new_order)
虽然我不知道这是如何工作的。 编码愉快。