R: Почему я получаю дополнительный столбец с заголовком «X.1» в моем фрейме данных после прочтения моего файла .txt? - PullRequest
0 голосов
/ 18 февраля 2020

Я получил этот файл .txt, полученный микроскопом для обработки.

#read the .txt file generated by microscope, skipping the first 9 lines of garbage information
df <- read.csv("Objects_Population - AllCells.txt", sep="\t", skip = 9,header=TRUE, fill = T)

Затем я начал смотреть на структуру фрейма данных, все выглядит нормально, за исключением того, что теперь я нашел дополнительный столбец в конце фрейма данных с именем "x.1", и все его строки равны NA ценности. Я не вижу этот столбец при открытии файла .txt в Excel. Я подозреваю, что проблема как-то связана с именами столбцов, сгенерированными микроскопом, они содержат довольно много специальных символов

Ниже приведен кадр данных, прочитанный Excel (показаны только последние 2 столбца, так как у меня 132 столбца, и их имена отвратительно длинные):

AllCells - Cell Contact Area with Neighbors [%] AllCells - Nucleus Nearest Neighbor Distance [µm]
0                                               4.82083
21.9512                                         0
15.7895                                         0
29.4118                                         0.584611
0                                               4.21569
0                                               1.99599
0                                               3.50767
...

Это случалось со мной раньше, но я никогда не воспринимал это слишком серьезно, поскольку всегда интересовался подмножеством своего фрейма данных. Теперь я смотрю на все столбцы, и это начинает меня беспокоить.

Есть ли способ, как я могу правильно их прочитать, не добавляя в конце этот дополнительный столбец "X.1"? Желательно, чтобы вручную не удалять или отделять последний столбец ...

Cheers, ML

Ответы [ 2 ]

0 голосов
/ 18 февраля 2020

Если все остальные имена столбцов верны, у вас, вероятно, есть конечный символ \t в текстовом файле. R пытается включить его и дает ему общее имя c имя столбца X.1.

Вы можете сначала попытаться прочитать файл как «обычный текст» и удалить конечный \t и только потом использовать read.csv:

file_connection <- file("Objects_Population - AllCells.txt")
content <- readLines(file_connection )
close(file_connection)

Теперь мы пытаемся избавиться от этих конечных \t (может потребоваться некоторое тестирование, чтобы соответствовать вашим потребностям)

sanitized <- gsub("\\t$", "", content)

И затем мы читаем это продезинфицированное строка, как если бы это был файл (с использованием аргумента text)

df <- read.csv(text=paste0(sanitized, collapse="\n"), sep="\t", skip = 9,header=TRUE, fill = T)
0 голосов
/ 18 февраля 2020

Это почти наверняка, потому что у вас есть дополнительный пустой столбец в электронной таблице.

В Excel откройте свой лист и нажмите Ctrl-End. Если вы окажетесь в пустой ячейке за пределами диапазона ваших данных, есть проблема. Выберите столбец (Ctrl-пробел), щелкните правой кнопкой мыши и выберите «Удалить».

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...