【问题标题】:Writing a function to clean string data and rename columns编写一个函数来清理字符串数据并重命名列
【发布时间】:2019-12-22 09:02:21
【问题描述】:

我正在编写一个应用于许多单独矩阵的函数。每个矩阵有 5 列字符串文本。我想删除与另一个元素内的字符串完全匹配的一个字符串,然后应用更多的 stringr 函数,将其转换为数据框,然后重命名列,在最后一步中,我想向每个列名的末尾,因为我会将其应用于许多矩阵并且需要稍后识别列。

这与我编写的另一个函数非常相似,所以我不知道为什么它不起作用。我尝试通过填写这样的输入来单独运行每一行,并且效果很好:

Review1[,4] <- str_remove(Review1[,4], Review1[,3])
Review1[,4] <- str_sub(Review1[,4], 4, -4)
Review1[,4] <- str_trim(Review1[,4], "both")
Review1 <- as.data.frame(Review1)
colnames(Review1) <- c("Title", "Rating", "Date", "User", "Text")
Review1 <- Review1 %>% rename_all(paste0, 1)

但是当我运行这个函数时,似乎什么都没有发生。

Transform_Reviews <- function(x, y, z, a) {
  x[,y] <- str_remove(x[,y], x[,z])
  x[,y] <- str_sub(x[,y], 4, -4)
  x[,y] <- str_trim(x[,y], "both")
  x <- as.data.frame(x)
  colnames(x) <- c("Title", "Rating", "Date", "User", "Text")
  x <- x %>% rename_all(paste0, a)
}

Transform_Reviews(Review1, 4, 3, 1)

这是我收到的唯一警告消息。当我单独运行 str_remove 函数时,我也会收到此消息,但它仍然会更改元素。但是当我运行 UDF 时,它没有任何改变。

警告信息: 1:在 stri_replace_first_regex(string, pattern, fix_replacement(replacement), ... 中: 不支持空搜索模式

这是我正在使用的 Review1 部分的示例。

     [,3]           [,4]                                               
[1,] "6 April 2014" "By Copnovelist on 6 April 2014" 
[2,] "18 Dec. 2015" "By kenneth bell on 18 Dec. 2015"
[3,] "26 May 2015"  "By Simon.B :-) on 26 May 2015"  
[4,] "22 July 2013" "By Lilla Lukacs on 22 July 2013"

这是我希望输出的样子:

Date1            User1
1  6 April 2014  Copnovelist
2  18 Dec. 2015  kenneth bell
3  26 May 2015   Simon.B :-)
4  22 July 2013  Lilla Lukacs

【问题讨论】:

  • 你能让这篇文章可复制我包括dput(Review1) 吗?还包括相同的预期输出。
  • 我添加了一些附加信息。希望有帮助!
  • 在你的UDF中,你可以在最后一行添加return(x)然后尝试运行它。看看有没有效果?
  • 你知道吗,我唯一的问题是我在尝试使用该函数时没有使用赋值运算符。即使是像我这样的初学者,也很尴尬!感谢您查看它!

标签: r matrix indexing user-defined-functions stringr


【解决方案1】:

我意识到我只需要使用赋值运算符来查看我的函数工作。

Review1 <- Transform_Reviews(Review1, 4, 3, 1)

【讨论】:

    猜你喜欢
    • 2018-12-29
    • 1970-01-01
    • 1970-01-01
    • 2023-02-04
    • 1970-01-01
    • 2015-09-30
    • 2022-11-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多