我正在阅读一个文件,前两行是这样的(颜色是空格分隔的):
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" ...