Как указано @Roland, у вас есть matrix
, а не data.frame
, и они имеют различные стандартные print
методы. Придерживаясь matrix
, вы можете установить quote = FALSE
явно в print
или вы можете использовать noquote
.
Вот простой пример:
## Sample data
x <- matrix(c(17, "chr1", 0, "miRNA", 18, "chr1", 0, "miRNA"), nrow = 2,
byrow = TRUE, dimnames = list(
NULL, c("position", "chrom", "value", "label")))
## Default printing
x
# position chrom value label
# [1,] "17" "chr1" "0" "miRNA"
# [2,] "18" "chr1" "0" "miRNA"
## Two options to make the quotes disappear
print(x, quote = FALSE)
# position chrom value label
# [1,] 17 chr1 0 miRNA
# [2,] 18 chr1 0 miRNA
noquote(x)
# position chrom value label
# [1,] 17 chr1 0 miRNA
# [2,] 18 chr1 0 miRNA
Кроме того, как вы выяснили, по своему усмотрению, превращая ваш matrix
в data.frame
делает котировки исчезают. A data.frame
- это более подходящая структура для хранения ваших данных, если каждый столбец представляет собой другой тип данных (числовой, символ, коэффициент и т. Д.). Однако преобразование matrix
в data.frame
не заботится о преобразовании столбцов для вас автоматически. Вместо этого, вы можете использовать type.convert
(который также используется при создании data.frame
использованием read.table
и семьи):
y <- data.frame(x, stringsAsFactors = FALSE)
str(y)
# 'data.frame': 2 obs. of 4 variables:
# $ position: chr "17" "18"
# $ chrom : chr "chr1" "chr1"
# $ value : chr "0" "0"
# $ label : chr "miRNA" "miRNA"
y[] <- lapply(y, type.convert)
str(y)
# 'data.frame': 2 obs. of 4 variables:
# $ position: int 17 18
# $ chrom : Factor w/ 1 level "chr1": 1 1
# $ value : int 0 0
# $ label : Factor w/ 1 level "miRNA": 1 1
y
# position chrom value label
# 1 17 chr1 0 miRNA
# 2 18 chr1 0 miRNA
-1 для требовать, чтобы иметь data.frame, когда это, очевидно, матрица. – Roland