【问题标题】:Doing calculation for section of a data and averaging对数据的一部分进行计算并取平均值
【发布时间】:2018-08-07 02:05:51
【问题描述】:

我正在尝试将 R 用于我的研究,我发现读取文件的一部分并进行一些计算并对计算完成的次数进行平均具有挑战性。例如。我有一个这样的文件:

框架

           1

 atoms in the system

       14657

 Box Dimensions
   5.870700    
   5.870700    
   5.870700    

 Methane molecules Trajectory
  14601  1      4.043000        1.539000        3.324000
  14602  1      3.979000        3.490000        1.266000
  14603  1      0.276000        1.889000        1.967000
  14604  1      3.710000        5.806000        1.362000
  14605  1      1.467000        1.433000        2.991000
  14606  1      2.675000        3.919000        1.486000
  14607  1      5.483000        0.201000        0.685000
  14608  1      5.371000        5.367000        3.819000

 frame
           2

 atoms in the system
       14657

 Box Dimensions
   5.870700    
   5.870700    
   5.870700    

 Methane molecules Trajectory
  14601  1      4.043000        1.539000        3.324000
  14602  1      3.979000        3.490000        1.266000
  14603  1      0.276000        1.889000        1.967000
  14604  1      3.710000        5.806000        1.362000
  14605  1      1.467000        1.433000        2.991000
  14606  1      2.675000        3.919000        1.486000
  14607  1      5.483000        0.201000        0.685000
  14608  1      5.371000        5.367000        3.819000

 frame
           3

 atoms in the system
       14657

 Box Dimensions
   5.870700    
   5.870700    
   5.870700    

 Methane molecules Trajectory
  14601  1      4.043000        1.539000        3.324000
  14602  1      3.979000        3.490000        1.266000
  14603  1      0.276000        1.889000        1.967000
  14604  1      3.710000        5.806000        1.362000
  14605  1      1.467000        1.433000        2.991000
  14606  1      2.675000        3.919000        1.486000
  14607  1      5.483000        0.201000        0.685000
  14608  1      5.371000        5.367000        3.819000

我需要跳过每帧的前 9 行,并使用第 3-5 列进行计算。我必须对每一帧重复计算并找到一个平均值。你能指导我吗?谢谢。

【问题讨论】:

  • 行是frameatoms in the system等文件行吗?有没有空行?据我了解,您想要的是将每个 Methane molecules Trajectory 之后的内容加载到不同的表中。这是正确的吗?
  • 是的。我需要的是甲烷分子轨迹之后的 8 行。我想做一些计算,比如计算每帧中特定位置的甲烷数量,并找到帧数的平均值。
  • 也许你可以适应一些东西:stackoverflow.com/q/51289972/3358272
  • 有效!感谢您的帮助 Rui Barradas。

标签: r


【解决方案1】:

如果我理解正确,以下代码将从文件中读取示例数据集中的表格。

首先,以交互方式(或通过任何您想要的方法)选择文件。

fl <- file.choose()

现在,阅读完整的表格,每个表格有 5 列。

lns <- readLines(fl)
frm <- grep("frame", lns, ignore.case = TRUE)
frm <- c(frm[-1], length(lns))
mth <- grep("methane", lns, ignore.case = TRUE)

df_list <- lapply(seq_along(frm), function(i) {
  con <- textConnection(lns[ (mth[i] + 1):(frm[i] - 1) ])
  dat <- read.table(con)
  close.connection(con)
  dat
})

最后,如果您只需要第 3、4 和 5 列,这将提取它们并生成一个名为 df_list3 的列表。

df_list3 <- lapply(df_list, '[', 3:5)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-01-14
    • 2023-03-03
    • 2017-06-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多