【问题标题】:Function to find varying strings查找不同字符串的函数
【发布时间】:2018-12-14 07:51:57
【问题描述】:

我需要做以下作业作为家庭作业,我正在努力寻找正确的答案:

编写一个函数find.names(),它接受两个参数:df,一个数据框,带有 列名和文本;和str,一个字符串。您的函数应该找到所有 Wikipedia 条目 (在df$text中)包含单词str,忽略字符的大小写,并返回相应的 个人姓名(df$names),作为按字母顺序排序的字符串向量。为了 例如,find.names(wiki, "Carnegie Mellon") 应该返回 c("Alan Fletcher (composer)", "John Tarnoff", "Joshua Bloch")

这是我的起始代码:

find.names = function(df,str){
grep("str|Str", df$text, value=TRUE)
return(df$names)
}

str 需要用引号引起来吗?我不确定该怎么说。还是for 循环?我尝试列出的示例find.names(wiki, "Carnegie Mellon),它返回NULL。我知道我错过了一些东西。

提前感谢您的帮助。

【问题讨论】:

    标签: r string user-defined-functions


    【解决方案1】:

    我们可以在grep中使用ignore.case = TRUE

    find.names = function(df, str){
         df$name[grep(str, df$text, ignore.case = TRUE)]
    
       }
    
    find.names(wiki, "Carnegie Mellon")
    

    【讨论】:

    • 这真的很有帮助。剩下的唯一问题是,当我希望它返回 df$name 时,它​​会返回 df$text。也就是说,我希望它返回与该数据行关联的第一列,而不是第二列。我最初的尝试:return(df$name) 仍然返回 NULL
    • @Bkk 感谢 cmets。事实上,我对 grep 在你的函数中闲置有点困惑。它返回一个索引,可用于子集“名称”。更新了答案。我希望这就是你的意思
    • 谢谢!我确实必须删除 value=TRUE 才能获得 df$name 列,但这有效。
    • @Bkk 是的,抱歉,我没有检查所有参数是我的错误。谢谢
    猜你喜欢
    • 2012-10-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多