【问题标题】:Subsetting columns in a dataframe in r based on indexes selected by user根据用户选择的索引在 r 中对数据框中的列进行子集化
【发布时间】:2019-03-19 06:33:10
【问题描述】:

我必须向用户提供数据框中所有可用列的列表,用户应输入需要子集的列的所有索引。现在我想使用这个用户输入的索引来设置数据帧的子集

示例步骤 (1) 显示并要求用户从数据框 (df) 中选择列名 (2) 用户选择:1,2,3,4,5 (3)从大数据框df中创建一个只有1,2,3,4,5列的数据框

【问题讨论】:

  • 您可以使用 base R 将子集与列索引一起使用
  • 那么这里的问题是什么?您是在问如何对data.frame 进行子集化吗?几乎 any 介绍性 R 教程涵盖了这一点。您是否要求其他人为您编写一个闪亮的应用程序(或类似的东西)来完成您所描述的事情?在这种情况下,SO 不是正确的论坛。 SO 不是免费的代码编写服务。社区帮助解决特定编码问题。
  • 我假设您正在构建一个闪亮的应用程序。您能否添加示例代码以显示您已完成的操作以及失败的原因或方式?然而,这似乎是家庭作业。
  • 我可以通过传递列索引直接进行子集化,但我不确定如何要求用户提及索引编号,然后使用这些索引集创建子集。它不适用于闪亮的应用程序。我已经创建了特征选择算法,我想使用特征选择中选择的列来运行我的参数调整。为了对这些列进行子集化,我希望用户输入索引

标签: r dataframe subset


【解决方案1】:

我能够使用以下代码来解决我的问题。

子集所需的元素

test_function<-function(data)
{ 
  prompt<-paste(which(colnames(data)==names(data)),'-',names(data))
  print(do.call(cat, c('Input column index numbers',as.list(prompt), sep="\n")))
  return(data[,c(as.numeric(unlist(strsplit(readline('Enter the column index number'),split=',')) ))])
}

subset_for_tuning <- test_function(Datadf)

【讨论】:

    【解决方案2】:

    由于您没有提供任何可使用的示例数据,因此社区很难为您提供帮助。请阅读how to post your question

    根据我对您问题的理解,我写了一个 sn-p,但这没有经过验证。进行必要的修改。

    library(stringr)
    cols <- colnames(inputdf)
    cat(paste("Available column names are :", cols))
    cat("Enter your choices seperated by ',':")
    choices <- readline()
    choices <- str_split(choices, pattern = ",")
    choices <- as.numeric(unlist(choices))
    outputdf <- subset.data.frame(inpudf, select = choices)
    

    【讨论】:

      猜你喜欢
      • 2021-10-13
      • 1970-01-01
      • 2013-08-15
      • 1970-01-01
      • 2021-10-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-04
      相关资源
      最近更新 更多