我无法使用以下公式将数据框中选定的列强制转换为数字
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
我找不出使用的第一个公式中的错误。
发布于 2020-01-13 22:46:17
因为我的工作不一定总是使用相同的列位置,所以我个人会使用josliber的方法和原始建议的组合。创建一个包含您想要强制执行的列名的向量,并使用lapply仅修改这些列。
test <- as.vector(c("test1", "test2", "test3"))
more[test] = lapply(more[test], as.numeric)
干杯
发布于 2014-01-03 00:42:47
当您使用test2 <- lapply(test, as.numeric)
时,它将构建一个新的列表(称为test2
),其中所有元素都转换为数字。这不会改变test
,也不会改变数据帧more
。
您可以在数据框中将列10、11和12转换为数字,如下所示:
more[,10:12] = as.numeric(more[,10:12])
发布于 2020-10-24 13:23:26
如果as.numeric
不工作,您也可以使用as.dataframe
。
https://stackoverflow.com/questions/20887385
复制相似问题