首页 > 解决方案 > 传递键值并从数据框中返回名称列表的函数,R?

问题描述

我对 R 的工作有点生疏,对 pandas 更熟悉,但我想不出它的语法会如何。有没有办法构建一个函数,将键值传递到数据框中,并返回与该键值关联的名称列表?

也有类似的...

#Example df Data
Name    JobID
Ted     1
Bill    1
Frank   2
Ox      3

FindName <- function(x){
  value = df.loc[(df['JobID'] == x), 'Name']
  outList = value.iloc[0]
  return outList

NameList <- FindName(df$JobID)

标签: rdataframe

解决方案


这是一个示例,它使用内置数据集的 mtcars 来返回向量/列中的元素(对您而言,这将是),其中向量/列(x对您而言,这将是Name)中的元素与值匹配(对您而言,这将是)。yJobIDv1

findName <- function(x, y, v) {
  x[y == v]
}

findName(rownames(mtcars), mtcars$cyl, 4)

现实情况是,您确实不需要将其作为函数执行,这是不必要的。在需要时直接编写会减少工作量df$Name[df$JobID == 1]。使用您的数据,上述解决方案返回:

> findName(df1$Name, df1$JobID, 1)
[1] Ted  Bill
Levels: Bill Frank Ox Ted
> df1$Name[df1$JobID == 1]
[1] Ted  Bill
Levels: Bill Frank Ox Ted

它们的工作方式是执行线性搜索以返回一个逻辑向量(TRUE/ FALSE;看看执行时会发生什么df$JobID == 1),然后将该逻辑向量传递给该向量的子集Name到逻辑向量所在的向量TRUE


推荐阅读