我想从向量源中分离数据框中的多个列,并使用 R 将它们的数据类型从字符转换为数字

I want to isolate multiple columns in a dataframe from a vector source and convert their data type from character to numeric using R

我有一个数据框

col1|col2|col3|cola|colb|colc|cold
 "1"   "1"  "1"    x    x    x    x

然后我有一个向量

 colnum<-c("col1","col2","col3")

我使用此脚本将数据框中的特定列从作为源的向量从字符转换为数字

df[colnum] <- sapply(df[column],as.numeric)

当我第一次尝试时它起作用了,但在再次使用它后它给了我这个消息

Error in lapply(X = X, FUN = FUN, ...) : 

'list' 对象无法强制键入 'double'

最好使用 lapply 而不是 sapply 因为这可以转换为 matrixlapply 总是 returns a list并且 data.frame 也是 list(具有列表元素,即等于 length 的列)

df[colnum] <- lapply(df[colnum],as.numeric)

在OP的代码中,也有错字。而不是colnum,而是写成column

更新

根据 OP 的评论,某些列似乎也是 list。在这种情况下,我们使用 lapplyunlistlist 遍历这些列并转换为 numeric

df[colnum] <- lapply(df[colnum], function(x) as.numeric(unlist(x)))