[英]coercing columns of a data frame to numeric
我无法使用以下公式将数据框的选定列强制转换为数字
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
我无法弄清楚使用的第一个公式中的错误。
因为我的工作不一定总是使用相同的列位置,所以我个人会结合使用 josliber 的方法和原始提案。 创建要强制的列名称的向量,并使用 lapply 仅修改这些列。
test <- as.vector(c("test1", "test2", "test3"))
more[test] = lapply(more[test], as.numeric)
干杯
当您使用test2 <- lapply(test, as.numeric)
,它正在构建一个新列表(称为test2
),其中所有元素都转换为数字。 这不会改变test
,也不会more
改变数据框。
您可以使用以下内容将数据框中的第 10、11 和 12 列转换为数字:
more[,10:12] = as.numeric(more[,10:12])
如果as.numeric
您也可以使用as.dataframe
。
假设您的数据框是x
并且列名是 "value" :
x["value"] <- as.numeric(x[,"value"])
如果您消除x[,"value"]
的 "," ,我的示例将不起作用。 我喜欢这种方法,因为它很简单。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.