将数字输入读取为字符串R

将数字输入读取为字符串R,r,R,我有这个表格的输入 id,No.,V,S,D 1,0100000109,623,233,331 2,0200000109,515,413,314 3,0600000109,611,266,662 我需要按原样读取编号列(即,作为字符)。我知道我可以用这样的方法: data <- read.csv("input.csv", colClasses = c("MSISDN" = "character")) data您需要在repeat过程中的read.csv()中给出列类型colClasse

我有这个表格的输入

id,No.,V,S,D
1,0100000109,623,233,331
2,0200000109,515,413,314
3,0600000109,611,266,662
我需要按原样读取编号列(即,作为字符)。我知道我可以用这样的方法:

data <- read.csv("input.csv", colClasses = c("MSISDN" = "character"))

data您需要在repeat过程中的read.csv()中给出列类型colClasses。
您不再具有标头,因此需要定义一个未命名的向量来指定colclass。
让我们假设colClasses的大小是150

mycollasses=rep(“数字”,150)

MyCollasses[2]您可以使用
readLines
以字符串形式读取数据,并将其拆分:

fileName <- "input.csv"
df <- do.call(rbind.data.frame, strsplit(readLines(fileName), ",")[-1]) # skipping headlines
colnames(df) <- c("id","No.","V","S","D") #adding headlines

为什么要分块阅读?您的final
read.csv
不像其他两个那样使用
colClasses
。@Remko在final read.csv中我无法添加colClasses,因为我在该语句中设置了header=false。一个简单的解决方案是使用
readLines
将文件作为字符串读取,并使用
split
获取cols…@holzbenCan请详细说明,我对R相当陌生。我提供的信息只是一个样本。原始文件包含大约150多列。那就很难采用你的解决方案了。有其他方法吗?正如我在问题中提到的,输入文件包含大约150多个列,手动为所有列标题放置数据类型非常困难。在我的第一个代码段中,您不需要这样做。列名(第三行)的更正也可以自动完成,例如使用readLine
fileName <- "input.csv"
df <- do.call(rbind.data.frame, strsplit(readLines(fileName), ",")[-1]) # skipping headlines
colnames(df) <- c("id","No.","V","S","D") #adding headlines
fileName <- "input.csv"
col <- c("integer","character","integer","integer","integer")
df <- read.csv(file = fileName,
               sep = ",", 
               colClasses=col, 
               header = TRUE, 
               stringsAsFactors = FALSE)