首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >根据条件更改字符行值(在订阅的分析中不允许NAs)

根据条件更改字符行值(在订阅的分析中不允许NAs)
EN

Stack Overflow用户
提问于 2022-05-17 16:00:06
回答 1查看 14关注 0票数 0

我有两个专栏。

每当第一列具有给定行的值"Breast"时,我希望添加另一列(test$IHC)的值。

这段代码应该可以正常工作:

代码语言:javascript
复制
testdat$Pathology[testdat$Pathology == "Breast"] <- paste("Breast (", testdat$IHC, ")")

但是,问题是函数testdat$Pathology[testdat$Pathology == "Breast"]在向量中包含NA,这会在第一行执行函数时提示错误:

代码语言:javascript
复制
NAs are not allowed in subscripted assignments

我发现的问题是,na.omit()无法工作,因为我认为它会在数据中产生一些修改:

代码语言:javascript
复制
na.omit(testdat$Pathology[testdat$Pathology == "Breast"]) <- paste("Breast (", testdat$IHC, ")")
EN

回答 1

Stack Overflow用户

发布于 2022-05-17 16:56:12

您可以显式地检查NA。请记住,在右侧也要包括相同的过滤器,否则向量将不匹配,并且值将被抵消。

代码语言:javascript
复制
testdat$Pathology[! is.na(testdat$Pathology) & testdat$Pathology == "Breast"] <- paste0("Breast (", testdat$IHC[! is.na(testdat$Pathology) & testdat$Pathology == "Breast"], ")")

通过将通用表达式保存在变量中,可以使其更简洁:

代码语言:javascript
复制
subscripts.to.replace <- ! is.na(testdat$Pathology) & testdat$Pathology == "Breast"
testdat$Pathology[subscripts.to.replace] <- paste0("Breast (", testdat$IHC[subscripts.to.replace], ")")
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72277255

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档