r - 在设置初始条件时创建字符串时如何排除值?
问题描述
我正在尝试组合我的数据框中的列,以便它们给我一个特定的字符串。我将标题为“C”、“H”、“O”、“N”和“S”的列作为元素。在这些列中列出了该分子中元素的数量,但我想根据它们的值排除一些元素。例如,当没有氧气时,值为 0,所以我想在组合元素以创建字符串时排除它。
#This is a portion of my data frame titled data4a
C H O N S
3 4 0 0 1
7 5 4 1 0
#The code I have is
data4a$NewComp = paste("C",data4a$Total.C,"H", data4a$NewH, "O", data4a$O, "N", data4a$N, "S", data4a$S, sep = "")
#This code gives me this
C H O N S NewComp
3 4 0 0 1 C3H4O0N0S1
7 5 4 1 0 C7H5O4N1S0
#I expect to see something like this when I print my results
C H O N S NewComp
3 4 0 0 1 C3H4S1
7 5 4 1 0 C7H5O4N
#I want values of zero to be excluded from the string created
解决方案
这是一个基本的 R 解决方案,它解决了问题问题并同时简化了分子向量的创建。
m <- matrix(paste0(names(data4a), t(as.matrix(data4a))),
ncol = ncol(data4a), byrow = TRUE)
m <- apply(m, 1, paste, collapse = "")
data4a$NewComp <- gsub(".0", "", m)
data4a
# C H O N S NewComp
#1 3 4 0 0 1 C3H4S1
#2 7 5 4 1 0 C7H5O4N1
数据。
data4a <- read.table(text = "
C H O N S
3 4 0 0 1
7 5 4 1 0
", header = TRUE)
推荐阅读
- javascript - handlebar.js 中的条件 IF
- powershell - 如果是第 7 天和第 14 天,Send-MailMessage
- apache-spark - Databricks 中的 Z 排序
- android - 方法 '~/' 在 null 颤动上被调用
- google-search - Google for Jobs 显示的工作位置不正确(Google 正在使用我们的公司总部)
- matrix - 我不知道如何构建我想要的视觉效果
- matlab - 如何识别大文本文件中的一行,从下面的行读取值,并将它们保存到工作区
- css - Mat-Select 不采用 .mat-form-field-infix 的默认父宽度 180 像素(边缘浏览器)
- url - CKAN:在 URL 路径中包含组织
- photoshop - Photoshop 保存操作按名称选择图层