r - 如果大于 R 中的某个长度,如何删除列值中的最后一个字符?
问题描述
我有数据调用deseq.res
。它有一个名为 Gene 的列。如果值大于 10 个字符长度,我想删除此列中的值。
deseq.res
deseq.res<-structure(list(Gene = c("SS1G_0300902", "SS1G_024991", "SS1G_09248",
"SS1G_09768"), sampleA = c("Healthy", "Healthy", "Healthy", "Healthy"
), sampleB = c("Infected", "Infected", "Infected", "Infected"
)), .Names = c("Gene", "sampleA", "sampleB"), row.names = c(NA,
4L), class = "data.frame")
我想要的结果:
Gene sampleA sampleB
SS1G_03009 Healthy Infected
SS1G_02499 Healthy Infected
SS1G_09248 Healthy Infected
SS1G_09768 Healthy Infected
我试过的代码:
这是我遇到麻烦的地方,然后我可以简单地使用 gsub 或 substring。我可以用更精细的方式来做到这一点,但我想用函数来做到这一点。
check.len<- function(x){if (length(deseq.res$Gene[x])>10) return (x)}
check.len(deseq.res$Gene)
解决方案
我们可以substr
用来提取数据的前 10 个字符的子字符串
deseq.res$Gene <- substr(deseq.res$Gene, 1, 10)
基于OP的功能,它nchar
代替length
check.len <- function(x, n) ifelse(nchar(x) > n, substr(x, 1, n) , x)
check.len(deseq.res$Gene, n = 10)
推荐阅读
- laravel - Safari 在所有 URL 前添加“localhost”,为什么?
- python - 检查列表中重复数组的快速方法
- r - R图形'text'包'adj'参数顺序错误不正确颠倒?
- css - flex div上的溢出自动从顶部剪切图像
- python - 二叉树高度 - 这个算法在 python 中是如何工作的?
- tfs - 带有外部 GITLAB 构建失败的 TFS
- javascript - 反应应用程序中服务的文件夹结构的最佳实践?
- vba - 多个特定单元格的 Worksheet_change
- excel - Excel Scrolling Marquee vb 脚本不适用于格式化文本
- javascript - 需要在 jquery 中为琐事游戏生成分数