这是我的第一篇文章。我刚刚开始编程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文件在此代码中的某一点跳过了每行的重复值,因此输出如下所示:
任何建议都将不胜感激!
答案 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。