Читать матрицу по столбцам в R

Я потратил много времени, пытаясь, но почему-то ничего не работает - и я думаю, что это легко для опытных пользователей R. Я получил Dataformat, где каждый элемент встречается так же. Сначала метка в виде строки, а затем 1000 числовых объектов, разделенных пробелами:

"label1" 1 0 1 0 0 0 ...
"label2" 0 0 0 0 1 0 ...
"label2" 0 0 1 0 1 0 ...
"label2" 1 1 1 1 0 0 ...
...

У меня проблема с метками при чтении матрицы (первая строка или всегда первый столбец). Я хочу применить эту матрицу к tsne (уменьшение размера), но метка вызывает проблемы. Поэтому мне нужна матрица без меток, но я бы хотел сохранить метки позже, чтобы я мог распечатать их с новыми размерами. То, что я до сих пор получил, это следующее (скорее псевдокод):

Data <- read.table("File.txt", header=False, row.names=1)
Labels <- Data[1]    # I somehow need the labels
Data[1] <- NULL # this should remove the first row (labels ?)
tsne = tsne(Data, initial_config = NULL, k = 2, initial_dims = 30,...)# function that reduces dimension

Здесь мне нужно что-то, что печатает новую 2-мерную матрицу вместе с каждой меткой, например label[x] + tsne[xDimension] + tsne[yDimension]

Я надеюсь, что кто-то из вас может помочь мне, спасибо заранее и наилучшими пожеланиями.

3 ответа

data <- read.table("File.txt", header=False, row.names=1)
dlabels <- data[,1]

res = tsne(as.matrix(data[,-1]), ...)

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

Читайте данные в использовании read.table, как прежде.

data_as_data.frame <- read.table(
  text = '"label1" 1 0 1 0 0 0 
"label2" 0 0 0 0 1 0 
"label2" 0 0 1 0 1 0 
"label2" 1 1 1 1 0 0'
)

Создайте матрицу из всех, кроме первого столбца.

data_as_a_matrix <- as.matrix(data_as_data.frame[, -1])

Используйте этот первый столбец как имена строк в матрице.

rownames(data_as_a_matrix) <- data_as_data.frame[, 1]
data_as_a_matrix
##        V2 V3 V4 V5 V6 V7
## label1  1  0  1  0  0  0
## label2  0  0  0  0  1  0
## label2  0  0  1  0  1  0
## label2  1  1  1  1  0  0

Попробуйте следующую команду:

cbind(Labels, tsne)
Другие вопросы по тегам