我无法使用以下公式将数据框的选定列强制转换为数字
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
我无法弄清楚使用的第一个公式中的错误。
答案 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"]
中的“,”,我的示例将不起作用。我喜欢这种方法,因为它很简单。