在 R 中将字符 (0) 保留为空字符串的同时取消列出一列
Unlist a column while retaining character(0) as empty strings in R
我对 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
s。
这是该列的样子
general_RN
c("Chlorambucil", "Vincristine", "Cyclophosphamide")
Pentazocine
character(0)
character(0)
c("Ampicillin", "Trimethoprim")
character(0)
我很惭愧地在这个问题上花了一个小时。
感谢您的建议。
如果没有关于您的数据的更多信息,很难说,但也许这可以成为您的解决方案,或者至少为您指明正确的方向:
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
我对 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
s。
这是该列的样子
general_RN
c("Chlorambucil", "Vincristine", "Cyclophosphamide")
Pentazocine
character(0)
character(0)
c("Ampicillin", "Trimethoprim")
character(0)
我很惭愧地在这个问题上花了一个小时。
感谢您的建议。
如果没有关于您的数据的更多信息,很难说,但也许这可以成为您的解决方案,或者至少为您指明正确的方向:
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