【问题标题】:How to return only the occurrence of a specific name in R如何仅返回 R 中特定名称的出现
【发布时间】:2020-08-14 17:48:47
【问题描述】:
df=read.delim("names.csv")
> df
        name
1     LIDSAY
2    STEFANY
3   FEDERICO
4   LEONARDO
5    DOROTHY
6       RUTH
7        AMR
8    Mohamed
9   FLORENCE
10     MANAL
11   MILDRED
12    FARIDA
13   LILLIAN
14    SYLVIA
15 ELIZABETH
16   FRANCES
17    EVELYN
18     MARIE
19   SHIRLEY
20       AMR

当我要求以下从列表中返回名称 farida 时,它只写入 integer(0)

t=grep ("FARIDA", names(df))

【问题讨论】:

    标签: r regex filtering


    【解决方案1】:

    这是因为您调用 names 出于某种原因返回:

    names(df)
    
    > names(df)
    [1] "name"
    

    试试这个:

    grep ("FARIDA", df$name)
    

    PS:也许你会发现 %in% 被使用,因为它给出了逻辑 TRUE/FALSE 并且比 grep 更快。如果您需要特定索引或使用逻辑向量,请使用 which 包装它,如下所示:

    df$name %in% "FARIDA"
    
    ## With indexing
    df[df$name %in% "FARIDA", ]
    

    【讨论】:

    • +1 - 但由于 OP 正在寻找一个单一的名称,==%in% 更有意义。
    【解决方案2】:

    使用which的替代解决方案

    which(df$name=="FARIDA")
    
      [1] 12
    

    【讨论】:

    • 请在发布之前测试您的代码。我可以在您在这里写的内容中发现三个错误。我还认为您的第二个答案简短而完美,我希望您只是删除了第一个相当糟糕的答案。
    • 感谢您的建议!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-17
    • 1970-01-01
    • 2021-11-02
    • 2022-01-08
    • 1970-01-01
    相关资源
    最近更新 更多