[英]R: How to create points using st_point() applied to columns of data.frame?
[英]How to insert placeholders for columns without data points using R?
我已經使用我們的軟件進行了幾次分析。 該軟件為每個實驗生成一個單獨的文件夾,其中包含一個名為“DistList”的 .txt 文件,如果該軟件能夠分析圖像。 如果它不能這樣做,則沒有 .txt 文件。 一般來說,文件夾排列是這樣的,如果有一個DistList:
為了將所有這些 .txt 文件放在一起,我已經制作了一個 R 腳本:
setwd("~/Desktop/Results/.")
fileList <- list.files(path = ".", recursive = TRUE, pattern = "DistList.txt", full.names = TRUE)
listData <- lapply(fileList, read.table)
names(listData) <- basename(dirname(fileList))
library(tidyverse)
library(reshape2)
bind_rows(listData, .id = "FileName") %>%
group_by(FileName) %>%
mutate(rowNum = row_number()) %>%
dcast(rowNum~FileName, value.var = "V1") %>%
select(-rowNum) %>%
write.csv(file="Result.csv")
在這種形式中,它現在生成具有以下結構的文檔,因為 A03 和 A04 中沒有 DistList.txt:
A01 A02 A05
103 118 558
225 545 779
228 666 898
553 1002 1883
966 2004 NA
1112 3332 NA
NA 4556 NA
NA 5596 NA
NA 6639 NA
但是,我想要一個列表,其中不包含 DistList.txt 文檔的文件夾也列在生成的 .csv 文件中,例如:
A01 A02 A03 A04 A05
103 118 NA NA 558
225 545 NA NA 779
228 666 NA NA 898
553 1002 NA NA 1883
966 2004 NA NA NA
1112 3332 NA NA NA
NA 4556 NA NA NA
NA 5596 NA NA NA
NA 6639 NA NA NA
但我不知道,我必須如何修改我的腳本以生成這樣的列表。 如果我只有很少的實驗,那就沒問題了。 但就我而言,有數百個這樣的列,如果缺少任何內容,手動驗證將花費太多時間。
如果您能幫我解決這個問題,我將不勝感激!
最簡單的就是修改前兩行,即文件列表和加載:
fileList = file.path(dir(path = ".", pattern = "A\\d+", full.names = TRUE), "DistList.txt")
這會生成所有文件夾的文件列表,即使相應的DistList.txt
文件不存在。 接下來,如果它們存在,我們就加載它們,否則我們只返回一個包含單個NA
的 tibble(不要忘記在執行此函數之前加載 ‹tibble› 包):
load_if_exists = function (filename, ...) {
tryCatch(
suppressWarnings(read.table(filename, ...)),
error = function (x) tibble(NA)
)
}
listData = lapply(fileList, load_if_exists)
請注意, load_if_exists
使用tryCatch
而不是依賴file.exists
。 這在您的情況下可能並不重要,但通常您不能依賴文件存在檢查,因為文件系統未同步,即理論上即使先前的文件存在檢查成功,讀取文件也可能失敗。 因此,在這種情況下, tryError
更加健壯。
不幸的是,在read.table
內部調用的file
函數除了對不存在的文件產生錯誤外,還會愚蠢地創建警告; 我們在上面的代碼中明確禁止了這個警告。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.