如何在r中作为数值对象读取数值

如何在r中作为数值对象读取数值,r,class,import,R,Class,Import,我有一个表,一列有一些文本,一列有一些数字。我的问题是:如何读取此表,使带有字符的列成为列字符,数字列成为数字列。一个选项是通过分组变量拆分列。这里,一个更简单的选项是将字符列(如果它是因子列-将字符类转换为as.character)转换为数值,这样所有非数值元素都将是NA,然后使用is.na转换为逻辑向量,并将原始列拆分为向量的列表。在对长度进行校正后,可以通过在末尾填充NAs将其转换回data.frame lst1 <- with(df1, split(col, !is.na(as.n

我有一个表,一列有一些文本,一列有一些数字。我的问题是:如何读取此表,使带有字符的列成为列字符,数字列成为数字列。

一个选项是通过分组变量拆分列。这里,一个更简单的选项是将
字符
列(如果它是
因子
列-将
字符
类转换为
as.character
)转换为
数值
,这样所有非数值元素都将是
NA
,然后使用
is.na
转换为逻辑向量,并
将原始列拆分为
向量的
列表。在对
长度
进行校正后,可以通过在末尾填充
NA
s将其转换回data.frame

lst1 <- with(df1, split(col, !is.na(as.numeric(col))))
mx <- max(lengths(lst1))
out <- data.frame(lapply(lst1, `length<-`, mx), stringsAsFactors = FALSE)
out <- type.convert(out, as.is = TRUE)
names(out) <- paste0("col", seq_along(out))
str(out)
#'data.frame':  4 obs. of  2 variables:
# $ col1: chr  "A" "D" "eff1" NA
# $ col2: int  1 2 3 4

lst1我不认为OP有一个数字和字符混合的列。他们说“一列有一些文字,一列有一些数字。”@neilfws我想OP想要这个解决方案。你能删除你的评论吗。当OP澄清时。如果它正在读取
.txt
.csv
文件,您是否尝试了基于数据描述的
读取.table
读取.csv
,默认情况下您应该获得这些列类型,除非出现其他情况,例如列中的数字+字符混合。您需要提供一个数据示例。
df1 <- data.frame(col = c(1, 2, 3, 'A', 4, 'D', 'eff1'), stringsAsFactors = FALSE)