R 数据框类型将整列从数字转换为字符

R 数据框类型将整列从数字转换为字符,r,casting,dataframe,numeric,R,Casting,Dataframe,Numeric,假设我有一个完全是数字的data.frame。例如,如果我将第一列的一个条目设置为字符,那么整个第一列都将成为字符 问题:我如何扭转这种局面。也就是说,如何使data.frame中的任何字符对象(显然是数字对象)强制为数字对象 MWE: 所以我的目标是从现在的测试方式,到测试[2:10]是数字的状态。所以我想我要的是一个函数,它在整个data.frame上都能做到这一点 简单的回答是你不能。 正如注释中提到的,在数据框中,列的所有元素必须具有相同的模式 如果您想特别查找数字形式的值,您可以使用下

假设我有一个完全是数字的data.frame。例如,如果我将第一列的一个条目设置为字符,那么整个第一列都将成为字符

问题:我如何扭转这种局面。也就是说,如何使data.frame中的任何字符对象(显然是数字对象)强制为数字对象

MWE:


所以我的目标是从现在的测试方式,到测试[2:10]是数字的状态。所以我想我要的是一个函数,它在整个data.frame上都能做到这一点

简单的回答是你不能。 正如注释中提到的,在数据框中,列的所有元素必须具有相同的模式

如果您想特别查找数字形式的值,您可以使用下面的方法,这里的vec是,比如说,数据帧列

  vec[!is.na(as.numeric((vec)))]
然后可以转换这些值,但遗憾的是不能将转换后的值放回同一列。和你一样,他们也会被强迫回到角色上来

对于一个可以将整个数据帧转换为数字的函数,如果要实现将特定条目隔离为异常是不可能的,您可以使用sapply


简而言之,你不能。 正如注释中提到的,在数据框中,列的所有元素必须具有相同的模式

如果您想特别查找数字形式的值,您可以使用下面的方法,这里的vec是,比如说,数据帧列

  vec[!is.na(as.numeric((vec)))]
然后可以转换这些值,但遗憾的是不能将转换后的值放回同一列。和你一样,他们也会被强迫回到角色上来

对于一个可以将整个数据帧转换为数字的函数,如果要实现将特定条目隔离为异常是不可能的,您可以使用sapply


允许data.frame中有list类型的向量,并且该列表可以包含除函数以外的任何类型的对象,只要它与data.frame中的其他列具有相同的长度,例如:

mydataframe <- data.frame(numbers=1:3)
mydataframe$mylist <- list(1, 'plum', 5)
mydataframe
#  numbers mylist
#1       1      1
#2       2   plum
#3       3      5
sapply(mydataframe, typeof)
#  numbers    mylist 
#"integer"    "list" 
sapply(mydataframe$mylist, typeof)
#[1] "double"    "character" "double"  

允许data.frame中有list类型的向量,并且该列表可以包含除函数以外的任何类型的对象,只要它与data.frame中的其他列具有相同的长度,例如:

mydataframe <- data.frame(numbers=1:3)
mydataframe$mylist <- list(1, 'plum', 5)
mydataframe
#  numbers mylist
#1       1      1
#2       2   plum
#3       3      5
sapply(mydataframe, typeof)
#  numbers    mylist 
#"integer"    "list" 
sapply(mydataframe$mylist, typeof)
#[1] "double"    "character" "double"  

R数据帧中的列只能有一种类型,所以如果您在like测试中放入一个字符串,它将被迫将整个列更改为一个字符串。您可以测试$X1,R数据帧中的一列只能有一种类型,所以如果您将字符串放入类似的测试中,它将被迫将整个列更改为字符串。您可以测试$X1,或者我们可以使用data.matrix…当然,但是如果您的列看起来像数字,但实际上是因子,data.matrix可能会给出意外的结果或者我们可以使用data.matrix…当然,但是如果您的列看起来像数字,但实际上是因子,data.matrix可能会给出意外的结果