【问题标题】:How to insert colnames and rownames from a textfile onto matrix?如何将文本文件中的列名和行名插入矩阵?
【发布时间】:2022-12-18 21:37:00
【问题描述】:

我有一个包含 5777 列和行的方阵。

head(data)
1.3 4.5 6 7 8.9 0 7.6
4.5 6.7 8 9 0.1 8 7.2
4.5 6 7 8.9 0.1 8 8.3
6.7 8 9 0.1 7.9 6.0 5
2.4 6.7 8 3 0.1 8 7.4 
8 9 0.1 7.9 6.0 5 5.6

我想将列名和行名插入到矩阵中。这些存在于文本文件中。此文本文件的总行数为 5777。

head(file.txt)

A1
B2
C3
D4
E5
F6
G7

我怎样才能在矩阵中插入列表(行名和列名),所以它看起来像这样

A1 B2 C3 D4 E5 F6 G7
B2 1.3 4.5 6 7 8.9 0 7.6
C3 4.5 6.7 8 9 0.1 8 7.2
D4 4.5 6 7 8.9 0.1 8 8.3
E5 6.7 8 9 0.1 7.9 6.0 5
F6 2.4 6.7 8 3 0.1 8 7.4 
G7 8 9 0.1 7.9 6.0 5 5.6

我努力了

#read in row names and column names  
names <- read.table("armlympho_matrix.snplist")

#read in matrix
data <- read.table("armlympho_matrix.ld")

#set the row names and column names in matrix 
colnames(data) <- names 
rownames(data) <- names 
 

ERROR: 

Error in `.rowNamesDF<-`(x, value = value) : invalid 'row.names' length
Calls: rownames<- ... row.names<- -> row.names<-.data.frame -> .rowNamesDF<-
Execution halted

输出完全错误

c("A1" "B2" "C3" "D4" "E5" "F6" "G7")
NA NA NA NA NA NA NA NA NA
NA NA NA NA NA NA NA NA NA

【问题讨论】:

  • read.table 返回一个数据框。如果必须使用第一列作为列名,请使用colnames(data) &lt;- header[[1]]。否则请准确描述您正在运行的代码的问题所在。
  • 请试试header &lt;- scan("file.txt", what = character())

标签: r


【解决方案1】:

要将 file.txt 文件中的行名和列名插入矩阵,可以使用 row.namescolnames 函数。这是您如何执行此操作的示例:

# Read in your matrix
data <- read.table(...)

# Read in the row names and column names from file.txt
names <- read.table(file.txt)

# Set the row names and column names of your matrix
row.names(data) <- names
colnames(data) <- names

此代码将从 file.txt 中读取您的矩阵和行名和列名,然后它将使用 row.namescolnames 函数将矩阵的行名和列名设置为名称中的值。

【讨论】:

  • 看我的编辑。我收到一个错误。
猜你喜欢
  • 2014-02-28
  • 2015-01-26
  • 1970-01-01
  • 2012-04-13
  • 1970-01-01
  • 2014-03-31
  • 2016-01-26
  • 2022-11-15
  • 1970-01-01
相关资源
最近更新 更多