读取R中的列式矩阵

时间:2014-01-10 09:28:01

标签: r matrix dimension-reduction

我花了很多时间尝试但不知何故没有效果 - 我想这对高级R用户来说很容易。 我得到了一个Dataformat,其中每个元素都按行出现。首先将标签作为String后跟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

在这里,我需要用每个标签打印新的二维矩阵, 例如label[x] + tsne[xDimension] + tsne[yDimension]

我希望你们中的某些人能够帮助我,先谢谢你们,并提出最好的问候。

3 个答案:

答案 0 :(得分:1)

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

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

之后你对标签的处理完全取决于你,因为从你的问题中你不清楚你想要与那些人一起做什么

答案 1 :(得分: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。

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

答案 2 :(得分:0)

尝试以下命令:

cbind(Labels, tsne)