【问题标题】:Apply a function if column name is in a list in R?如果列名在 R 的列表中,则应用函数?
【发布时间】:2017-01-27 18:33:16
【问题描述】:

好的,我可能正在寻求一种迂回的方式来实现这一点,但我有一个名为“goodAttributes”的列表和一个名为QTable 的数据框。如果QTable 的列名在“goodAttributes”中,则我想返回该列的最大值,否则我想返回该列的最小值...

我使用“grepl”检查了QTable 的列名是否在列表“goodAttributes”中,然后如果该值在列表“goodAttributes”中,则重置QTable 的列名为“True”,否则将列名设置为“False”,并调用新表QTable2

当前 DataFrame 名为“QTableB”:

现在,如果QTableB 的列名是“True”我想找到该列的最大值,如果QTableB 的列名是“False”我想返回最小值该列的...将结果存储在新的数据框中。

【问题讨论】:

  • 编辑您的问题。 (不要使用 cmets。)将数据作为文本发布,然后显示您的代码。不是我的反对票。 (其他人看到了同样的问题并且很懒惰。)

标签: r dataframe grepl


【解决方案1】:

一种方法是简单地将一个函数应用于框架的所有colnames

QTable  <- data.frame(v1=1:10,v2=11:20,v3=31:40)
goodAttributes <- c("v1","v3")

sapply(colnames(QTable),function(c){
  if(c %in% goodAttributes) max(QTable[,c])
  else min(QTable[,c])})

产生

v1 v2 v3 
10 11 40

即v1 和 v3 的最大值(goodAttributes 中的列名)和 v2 的最小值。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-01-14
    • 2016-04-03
    • 1970-01-01
    • 2020-06-27
    • 1970-01-01
    • 1970-01-01
    • 2014-08-15
    相关资源
    最近更新 更多