为什么我的R函数会删除.csv输出中的重复值?

时间:2017-09-24 01:55:45

标签: r function lapply

这是我的第一篇文章。我刚刚开始编程2周前,因为我的研究实验室需要该小组的技能。我们正在提取未从软件分隔的数据,因此剪切和粘贴最终会带有随机空间值,需要数小时才能清理。所以我写了这段代码,我在Word中清理数据,然后复制到剪贴板。我将剪贴板内容分配给变量。

例如,如果原始原始数据如下所示:

 Component                                        WBC                              RBC                            Hemoglobin                    
Latest Ref Rng & Units                           3.90 - 12.70 K/uL                4.60 - 6.20 M/uL               14.0 - 18.0 g/dL              
9/11/2017                                        7.16                             4.71                           13.3 (L)                      
3/20/2017                                        5.80                             4.31 (L)                       12.7 (L)                      
2/6/2017                                         6.10                             3.74 (L)                       11.3 (L)                      
1/30/2017                                        6.59                             4.18 (L)                       12.7 (L)                      
1/26/2017                                        7.40                             7.40 (L)                       12.1 (L)                                   

我在Word中清理它以复制到剪贴板中:

 Component                                        WBC                              RBC                            Hemoglobin                    
9/11/2017                                        7.16                             4.71                           13.3                       
3/20/2017                                        5.80                             4.31                        12.7                       
2/6/2017                                         6.10                             3.74                        11.3                       
1/30/2017                                        6.59                             4.18                        12.7                       
1/26/2017                                        7.40                             7.40                        12.1                       

然后,在将readClipboard()分配给对象后,运行我创建的以下函数:

   cbclabs.R <- function (x){ 
            trimcbc <- strsplit(trimws(x), " ")
             removespace <- c("&", "")
           unlisted <- unlist(lapply(trimcbc, setdiff, removespace))
            cbcmatrix <- matrix(unlisted, ncol = 4, byrow = TRUE)
             return(write.csv(cbcmatrix, file = "cbc.csv"))
             }

但不幸的是,csv文件在此代码中的某一点跳过了每行的重复值,因此输出如下所示: enter image description here

我希望它不会跳过重复值并创建如下所示的输出: enter image description here

任何建议都将不胜感激!

1 个答案:

答案 0 :(得分:1)

可以简化一下:

原始剪贴板数据

library(tidyverse) # add pipe `%>%` operator
t(sapply(strsplit(readClipboard(), " "), c)) %>% write.csv("cbc.csv")

或者只是:

write.csv(t(sapply(strsplit(readClipboard(), " "), c)), "cbc.csv")

编辑:对于新剪贴板数据

write.csv(t(sapply(strsplit(readClipboard(), "\\s+"), c)), "cbc.csv")

假设您从&#34; C&#34;在左上角到右下角的1。