如果列名在 R 的列表中,则应用函数?
Apply a function if column name is in a list in R?
好吧,我可能正在寻求一种迂回的方式来完成这个,但我有一个名为“goodAttributes
”的列表和一个名为 QTable
的数据框。如果 QTable
的列名在“goodAttributes
”中,那么我想 return 该列的最大值,否则我想 return 该列的最小值。 .
我使用“grepl
”检查了 QTable
的列名是否在列表“goodAttributes
”中,如果值在列表“goodAttributes
”中为 "True",否则将列名称设置为“False
”,并调用新的 table QTable2
.
当前调用的 DataFrame "QTableB":
现在,如果 QTableB
的列名是“True
”,我想找到该列的最大值,如果 QTableB
的列名是“False
" 我想 return 该列的最小值...将结果存储在新的数据框中。
实现此目的的一种方法是简单地将函数应用于框架的所有 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.
的最小值
好吧,我可能正在寻求一种迂回的方式来完成这个,但我有一个名为“goodAttributes
”的列表和一个名为 QTable
的数据框。如果 QTable
的列名在“goodAttributes
”中,那么我想 return 该列的最大值,否则我想 return 该列的最小值。 .
我使用“grepl
”检查了 QTable
的列名是否在列表“goodAttributes
”中,如果值在列表“goodAttributes
”中为 "True",否则将列名称设置为“False
”,并调用新的 table QTable2
.
当前调用的 DataFrame "QTableB":
现在,如果 QTableB
的列名是“True
”,我想找到该列的最大值,如果 QTableB
的列名是“False
" 我想 return 该列的最小值...将结果存储在新的数据框中。
实现此目的的一种方法是简单地将函数应用于框架的所有 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.