确定输入文件中数据的类型



我正在阅读一个文件,前两行是这样的(颜色是空格分隔的):

c1 c2 c3 c4 c5

1 2 3 4 5

我想读取前两行并确定第一行是字符向量还是数字向量?(在上面的示例中,它是字符,但在其他文件中它可以是数字)。

我该怎么做呢?我试着用read。表,数据。表和读取,但它们都不能正常工作。阅读。该表将每个元素转换为整数。你能告诉我一个简单的方法吗?

你可以按照

twoLines <- readLines("myFile", nrow=2)
firstLineFields <- strsplit(twoLines, " ")[[1]]
allNumeric <- !any(is.na(as.numeric(firstLineFields)))
allChar <- all(is.na(as.numeric(firstLineFields)))

这应该对你有用。

df <- data.frame(matrix(rnorm(5),ncol=5))
write.table(df, "hdr.txt", sep=" ")
write.table(df, "nohdr.txt", sep=" ",col.names=F)
input <- read.table("hdr.txt",colClasses="character",nrows=1) # grab first line
hdr   <- any(is.na(as.numeric(input)))                   # hdr=T if any character
hdr
# [1] TRUE
input <- read.table("nohdr.txt",colClasses="character",nrows=1) # grab first line
hdr   <- any(is.na(as.numeric(input)))                   # hdr=F if all numeric
hdr
# [1] FALSE
data  <- read.table(header=hdr,...)

所以读第一行,强迫所有的字符。对其应用as.numeric(...)函数将为任何不能强制为数字的元素返回NA。如果发生这种情况,你就得到了一个标题

您只是在寻找str函数吗?

df <- data.frame(number_column = c(1, 2, 3),
                 factor_Column = c('a', 'b', 'c'),
                 date_column = as.Date(c('2014-01-01', '2014-01-01', '2014-01-01'),
                                      format = '%Y-%m-%d'))       
str(df)
'data.frame':   3 obs. of  3 variables:
 $ number_column: num  1 2 3
 $ factor_Column: Factor w/ 3 levels "a","b","c": 1 2 3
 $ date_column  : Date, format: "2014-01-01" "2014-01-01" ...

相关内容

  • 没有找到相关文章

最新更新