我正在尝试从this file中提取第一列。它是由16个数字组成的序列,应视为字符串。问题是,当我将数据写入文本文件时,某些值似乎已更改。以下是我正在使用的代码。
dataMaster = read.table("Master.txt", header = F, colClasses = rep("character",67))
write.table(dataMaster$V1, "sequence.txt", col.names = F, row.names = F,
quote = F, sep = "\n")
下面是一个示例。我采用了相同的两行261182、261183。同一错误有很多出现。看来当我写9号文件时,它替换为0号。
主文件是在Mac环境中处理的,而我正在Windows环境中工作。
答案 0 :(得分:3)
如果您想sequence
成为character
,另一种方法是指定您的colClasses
:
library(dplyr)
dataMaster %>%
select(1) %>%
write.table("sequence.txt", col.names = F, row.names = F,
quote = F, sep = "\n")
sequence <- read.table("sequence.txt", colClasses = "character")
dataMaster[c(261182, 261183), 1]
#[1] "9171513174761179" "9171513174771179"
sequence[c(261182, 261183), ]
#[1] "9171513174761179" "9171513174771179"
答案 1 :(得分:0)
如果要使用字符串进行操作,请参见下面的patL答案。接下来是我将数字序列视为数字的答案。
您可能需要增加scipen
下的options
值:
options(scipen=999)
当您输出numbers to any format时,这将使精度位数超过默认值15。
在输入方面,如果仅是为了避免损失而指定character
,则应将numerals
的{{1}}参数改为默认的read.table
(第一种选择)将导致损失,而不会发出警告。我已从下面的帮助页面"no.loss"
复制了相关文本。
?read.table
read.table(..., numerals = c("allow.loss", "warn.loss", "no.loss"))