1

我需要将一个 Excel 文档导入到 Mathematica 中,其中包含 2000 个化合物,每个化合物都有 6 个数字常数分配给它。最终目标是在mathematica 中输入一个复合名称并输出6 个数字常数。到目前为止,我的代码是:

t = Import["Titles.txt.", {"Text", "Lines"}] (导入化合物名称) n = Import["NA.txt.", "List"] (导入每个化合物的 6 个值)

n[[2]] (输出第二个化合物 6 个值

而不是 n[[#]] 我想知道如何从导入的化合物名称中输入一个化合物并输出 6 个值。

4

1 回答 1

0

我不确定我是否理解您的问题 - 例如,您有两个文本文件,而不是一个 Excel 文件,并且不清楚数据是什么样的。但可能有很多方法可以做到这一点。这是一个建议(这可能不是最好的方法):

假设您已将所有数据放入一个表(列表列表)中:

pt = {
 {"Hydrogen", "H", 1, 1.0079, -259, -253, 0.09, 0.14, 1776, 1, 13.5984},
 {"Helium", "He", 2, 4.0026, -272, -269, 0, 0, 1895, 18, 24.5874},
 {"Lithium" , "Li", 3, 6.941, 180, 1347, 0.53, 0, 1817, 1, 5.3917}
 }

要查找与特定字符串关联的信息:

Cases[pt, {"Helium", rest__} -> rest]

{“他”, 2, 4.0026, -272, -269, 0, 0, 1895, 18, 24.5874}

该模式rest__包含在“氦”之后发现的所有内容。

要查找第二项:

 Cases[pt, {_, "Li", rest__} -> rest]

{2, 4.0026, -272, -269, 0, 0, 1895, 18, 24.5874}

如果您向模式添加更多信息,您可以更灵活地从表中选择元素:

Cases[pt, {name_, symbol_, aNumber_, aWeight_, mp_, bp_, density_, 
           crust_, discovered_, rest__} 
      /; discovered > 1850  -> {name, symbol, discovered}]

{{“氦”,“他”,1895}}

对于交互的东西,你可以敲一个Manipulate

elements = pt[[All, 1]];
headings = {"symbol", "aNumber", "aWeight", "mp", "bp", "density", "crust", "discovered", "group", "ion"};
Manipulate[
 Column[{
   elements[[x]],
   TableForm[{
     headings, Cases[pt, {elements[[x]], rest__} -> rest]}]}],
{x, 1, Length[elements], 1}]

交互的

于 2013-05-24T09:44:24.943 回答