Читать матрицу по столбцам в 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