在数据 R 中找不到列名时返回文本

Posted

技术标签:

【中文标题】在数据 R 中找不到列名时返回文本【英文标题】:Return text when column name not found in data R 【发布时间】:2020-01-10 12:58:17 【问题描述】:

我正在尝试创建一个函数,该函数接收数据框和数据中的列名。如果在数据中未找到列名,该函数应返回“检查列名”。如果找到了列名,它应该返回“(列名) text here (row name) text here (max value of the column)”。

到目前为止我所做的是


Function <- function(data,col) 
data<-data[, col]
if(is.na(col)) 
print ("check column name")
 else 
print(paste(colnames(data), "text here", rownames(data), "text here", max(data))



但这行不通。

我认为问题在于不知道如何定义“如果在数据中找不到列名”。我也试过了

if(col==NA)
if(data==NA)

但它们也不起作用。我也不确定如何在数据中找到列名时函数应返回的文本中间打印值,例如行名和列名。

【问题讨论】:

【参考方案1】:

你可以使用%in% -

Function <- function(data, col) 
  if(!col %in% names(data)) 
    print ("check column name")
   else 
    max_row <- which.max(data[, col])
    print(paste("Column:", col, "Row:", rownames(data)[max_row],
                "MaxValue:", data[max_row, col]))
  


Function(iris, "test")
[1] "check column name"

Function(iris, "Sepal.Width")
[1] "Column: Sepal.Width Row: 16 MaxValue: 4.4"

【讨论】:

非常感谢,“检查列名”现在完全符合我的要求!但是,当找到该列时,我仍然无法打印我想要的文本。 colnames() 是列名的正确命令,rownames() 是行名的正确命令吗? @Joe 您是否要打印出现最大值的行名和列名?添加列存在于数据中时的预期输出示例。 我正在寻找打印数据中存在的列的最大值。因此,例如对于函数(iris,“COL”),输出应该是“在 COL 中,最大值在(此处的行名)中,即(此处的最大值)”。 @Joe 查看更新的答案。如果它回答了您的问题,请考虑使用此答案左上角的勾号将其标记为正确。

以上是关于在数据 R 中找不到列名时返回文本的主要内容,如果未能解决你的问题,请参考以下文章

PSQLException:在此 ResultSet 中找不到列名 start_value

R包重塑函数融化错误:使用很多因素时在数据中找不到id变量

PSQLException:在此 ResultSet 中找不到列名 clazz_

在 DAL 中找不到数据时如何在 BLL 中引发异常

R - 在用户定义的函数中找不到对象

在缓存中找不到但不缓存结果时如何使@Cacheable返回null?