【问题标题】:How to replace empty cells of a particular column in a list with a character in R如何用R中的字符替换列表中特定列的空单元格
【发布时间】:2021-09-08 07:53:12
【问题描述】:

我有一个包含大约 100 个数据框的列表,我想用一个字符替换列表中所有数据框的特定列(名为事件)中的空单元格。我首先尝试了以下代码,

lapply(my_list, function(x) replace(x,is.na(x),"No_Event"))

以上代码将所有的 NA 替换为 '"No_Event"。但我想替换特定列中的空单元格。也不知道如何表示代码中的空白单元格。下面的“ ”不起作用。

然后我尝试了,

lapply(my_list, function(x) transform(x, Event = chartr(" ", 'No_Event', Event))

我了解上述代码将特定字母替换为指定字符,但不确定如何将特定列的空/空白单元格转换为字符。此外,我还尝试了一些其他代码,这些代码会产生错误。如果问题非常基本并且我遵循的方法是错误的,我们深表歉意。

谢谢

【问题讨论】:

    标签: r string list replace


    【解决方案1】:

    这是一个可重现的示例 (R Version 4.1.0)

    library(tidyverse)
    
    my_list <- list(
      data.frame(a = 1:5, Event = c(6, "", "", 9, ""), c = 11:15), 
      data.frame(a = 1:5, Event = c("", "", "", 8, 9), c = 16:20)
    )
    
    lapply(my_list, FUN = \(x) {
      x |> mutate(Event = case_when(Event == "" ~ "No event", TRUE ~ Event))
    })
    
    

    对于早期的 R 版本:

    lapply(my_list, FUN = function(x) {
      x %>% mutate(Event = case_when(Event == "" ~ "No event", TRUE ~ Event))
    })
    

    【讨论】:

    • 非常感谢您的回复。我试过了。但它返回以下错误,“错误:必须是字符向量,而不是factor 对象”。我检查了我的列表,特定列是字符格式。
    • 数据中的部分/全部Event 列是因子,需要在评估前转换为字符。使用这个:lapply(my_list, FUN = \(x) { x |&gt; mutate( Event = as.character(Event), Event = case_when(Event == "" ~ "No event", TRUE ~ Event) ) })
    • 是的。是的,它奏效了。非常感谢:-)
    猜你喜欢
    • 2023-03-07
    • 1970-01-01
    • 2017-08-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多