代码:
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'
谢谢,
答案 0 :(得分:113)
如果要将a
的所有元素转换为单个数字向量,length(a)
大于1(好的,即使长度为1),你可以先unlist
对象然后转换。
as.numeric(unlist(a))
# [1] 10 38 66 101 129 185 283 374
请记住,此处没有任何质量控制。另外,X$Days
是一个奇怪的名字。
答案 1 :(得分:27)
如果您的列表是需要转换为数字的多个元素,则可以使用lapply(a, as.numeric)
实现此目的。
答案 2 :(得分:6)
您还可以使用列表子集来选择要转换的元素。如果您的列表包含多个元素,那将非常有用。
as.numeric(a[[1]])
答案 3 :(得分:0)
某些数据存在问题。考虑:
as.double(as.character("2.e")) # This results in 2
另一种解决方案:
get_numbers <- function(X) {
X[toupper(X) != tolower(X)] <- NA
return(as.double(as.character(X)))
}
答案 4 :(得分:0)
在这种情况下,循环也可以完成工作(通常足够快)。
a <- array(0, dim=dim(X))
for (i in 1:ncol(X)) {a[,i] <- X[,i]}