gpt4 book ai didi

r - 从元素列表到化学式

转载 作者:行者123 更新时间:2023-12-04 22:39:38 25 4
gpt4 key购买 nike

我有一个元素组合列表,每个元素都在它自己的行中。有时这些元素有一个零。

   C H N O S
1 5 5 0 0 0
2 6 4 1 0 1
3 4 6 2 1 0

我需要将它们组合起来以便它们阅读,例如C5H5、C6H4NS、C4H6N2O。
这意味着对于值为“1”的任何元素,我应该只取列名,对于值为 0 的任何元素,应该完全跳过该列。

我不确定从哪里开始。我可以添加一个新列,以便更轻松地跨列阅读,例如
   c C h H n N o O s S
1 C 5 H 5 N 0 O 0 S 0
2 C 6 H 4 N 1 O 0 S 1
3 C 4 H 6 N 2 O 1 S 0

这样,我只需要输出是单个字符串,但我需要忽略任何零值,并删除元素名称后面的那个。

最佳答案

这里有一个基本的 R 解决方案:

df = read.table(text = "
C H N O S
5 5 0 0 0
6 4 1 0 1
4 6 2 1 0
", header=T)

apply(df, 1, function(x){return(gsub('1', '', paste0(colnames(df)[x > 0], x[x > 0], collapse='')))})
[1] "C5H5" "C6H4NS" "C4H6N2O"
paste0(colnames(df)[x > 0], x[x > 0], collapse='')将行值大于零的列名粘贴在一起。 gsub然后删除那些。和 apply对数据框中的每一行执行此操作。

关于r - 从元素列表到化学式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52873954/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com