取消列表,同时将字符(0)保留为R中的空字符串

时间:2017-06-20 17:30:40

标签: r list text character na

我是R的新手。我有一个数据框,其列存储为列表。我的专栏包含c("Benzo", "Ferri")character(0),如果它为空。如何将它们更改为Benzo, Ferri而将字符串(0)替换为空字符串?

我无法,例如df$general_RN <- unlist(df$general_RN),因为Error in $<-.data.frame(*tmp*, general_RN, value = c("Drug Combinations", : replacement has 1992 rows, data has 10479

我假设所有character(0)都已删除,但我需要将其保留为NA

以下是该列的内容

general_RN
c("Chlorambucil", "Vincristine", "Cyclophosphamide")
Pentazocine
character(0)
character(0)
c("Ampicillin", "Trimethoprim")
character(0)

我羞于花了一个小时来解决这个问题。

感谢您的建议。

1 个答案:

答案 0 :(得分:4)

如果没有关于您的数据的更多信息,很难说,但也许这可以成为您的解决方案,或者至少指出您正确的方向:

a <- list('A',character(0),'B')

> a
[[1]]
[1] "A"

[[2]]
character(0)

[[3]]
[1] "B"

> unlist(lapply(a,function(x) if(identical(x,character(0))) ' ' else x))
[1] "A" " " "B"

所以在你的情况下应该是:

df$general_RN <- unlist(lapply(df$general_RN,function(x) if(identical(x,character(0))) ' ' else x))

HTH