将数据框的列强制转换为数字

时间:2014-01-02 16:36:39

标签: r

我无法使用以下公式将数据框的选定列强制转换为数字

x<-read.csv("more.csv",colClasses="character")

test<-list(more[,10],more[,11],more[,12])
test2<-lapply(test,as.numeric)

但是

is.numeric(more[,10])
[1] FALSE

当我使用以下公式时,它可以工作:

more[,10]<-as.numeric(more[,10])

is.numeric(more[,10])
[1] TRUE

我无法弄清楚使用的第一个公式中的错误。

4 个答案:

答案 0 :(得分:1)

由于我的工作不一定总是使用相同的列位置,因此我个人将josliber的方法和原始建议结合使用。创建一个要强制转换的列名的向量,并使用lapply仅修改这些列。

test <- as.vector(c("test1", "test2", "test3"))
more[test] = lapply(more[test], as.numeric)

欢呼

答案 1 :(得分:0)

当您使用test2 <- lapply(test, as.numeric)时,它正在构建一个新列表(名为test2),其中所有元素都转换为数字。这不会更改test,也不会更改数据框more

您可以将数据框10,11和12转换为数字框架中的数字,例如:

more[,10:12] = as.numeric(more[,10:12])

答案 2 :(得分:0)

如果as.dataframe不起作用,您也可以使用as.numeric

答案 3 :(得分:0)

假设您的数据框是 x 并且列名称是“value”:

x["value"] <- as.numeric(x[,"value"])

如果您删除 x[,"value"] 中的“,”,我的示例将不起作用。我喜欢这种方法,因为它很简单。