read.table row.names & col.names ОШИБКА

Это очень раздражает, я не могу понять, что не так?

Это мой файл .csv:

            D102-A1 D102-A2
A1BG        0.32    0.39
A1BG-AS1    0.08    0.14

Фактический вид:
;D102-A1;D102-A2
A1BG;0,32;0,39
A1BG-AS1;0,08;0,14

Это мой код:

x <- read.table(file = "file.csv", sep = ";", header = TRUE, col.names = 1)

Это дает следующие ошибки:

больше столбцов, чем имен столбцов. Кроме того: Предупреждающее сообщение: заголовок и «col.names» имеют разную длину.

Первая строка в виде пустой ячейки в левом верхнем углу, разве это не заголовок? Когда у меня есть заголовок, почему я не могу установить столбец 1 как row.names?

Спасибо!


person user3236594    schedule 14.02.2014    source источник
comment
В файле csv есть значения, разделенные запятыми (CSV), ваш код предполагает, что разделителем является точка с запятой.   -  person PyNEwbie    schedule 14.02.2014
comment
и если разделитель правильный, он должен быть row.names вместо col.names   -  person Ananta    schedule 14.02.2014
comment
@PyNEwbie: точка с запятой обычно используется в CSV-файлах, где запятая используется для десятичной точки.   -  person Christopher Louden    schedule 14.02.2014
comment
Я использую точку с запятой, потому что она может быть открыта в Excel автоматически. Изменение на row.names = 1 дает эту ошибку: дубликаты «row.names» не допускаются.   -  person user3236594    schedule 14.02.2014


Ответы (2)


Я не уверен, так как никогда не использовал R, но я просматривал страницу руководства http://cran.r-project.org/doc/manuals/R-intro.html#The-read_002etable_0028_0029-function и предполагает, что вам нужны заголовки столбцов для всех столбцов данных если нет меток строк.

ты пробовал:

read.table(file = "file.csv", sep = ";")

а потом посмотрели результаты?

Это заставляет меня думать, что вам нужно протестировать без опции colnames

Для непосредственного чтения всего фрейма данных внешний файл обычно имеет специальную форму.

В первой строке файла должно быть имя для каждой переменной во фрейме данных.

Каждая дополнительная строка файла имеет в качестве первого элемента метку строки и значения для каждой переменной.

Я пытаюсь подчеркнуть, что примечание предполагает, что без имени столбца над первым столбцом программа испытывает трудности с интерпретацией данных. Как будут называться данные, если нет заголовка столбца?

person PyNEwbie    schedule 14.02.2014

Из ?read.table необязательный аргумент col.names представляет собой вектор имен для столбца. Таким образом, указывая col.names = 1, вы говорите, что существует единственный столбец с именем 1.

Чтобы исправить это, вы можете удалить аргумент col.names

test1 <- ";D102-A1;D102-A2
A1BG;0.32;0.39
A1BG-AS1;0.08;0.14"
tf <- tempfile()
writeLines(test1, tf)

x <- read.table(tf, sep=";", header=TRUE)

Однако это оставляет вам X в качестве имени столбца в первой «ячейке». Если это приемлемо, вы можете придерживаться этого; но если это не так, ваши данные, возможно, придется снова переплавить или изменить, но чтобы посоветовать вам об этом, нам нужно знать, какой фрейм данных вы надеетесь создать.

person Hugh    schedule 14.02.2014