如何强制列表对象键入“双”

代码:

a <- structure(list(`X$Days` = c("10", "38", "66", "101", "129", "185", "283", "374")), .Names = "X$Days") 

然后a就像

 $`X$Days` [1] "10" "38" "66" "101" "129" "185" "283" "374" 

我想强制a数值的数组,但强制函数返回我

 Error: (list) object cannot be coerced to type 'double' 

谢谢,

如果要将a所有元素转换为单个数字向量,并且length(a)大于1(即使长度为1,那么也可以),您可以unlist对象unlist ,然后转换。

 as.numeric(unlist(a)) # [1] 10 38 66 101 129 185 283 374 

请记住,这里没有任何质量控制。 另外, X$Days是一个强大的奇怪的名字。

如果您的列表需要转换为数字的多个元素,可以用lapply(a, as.numeric)来实现。

您也可以使用列表子集来select要转换的元素。 如果你的列表有一个以上的元素,这将是有用的。

as.numeric(a[[1]])

有些数据有问题。 考虑:

 as.double(as.character("2.e")) # This results in 2 

另一个scheme

 get_numbers <- function(X) { X[toupper(X) != tolower(X)] <- NA return(as.double(as.character(X))) }