📌  相关文章
📜  如何在 R 中修复:(列表)对象不能被强制输入'double'

📅  最后修改于: 2022-05-13 01:55:24.767000             🧑  作者: Mango

如何在 R 中修复:(列表)对象不能被强制输入'double'

在本文中,我们正在寻找解决 R 编程语言中“(list) object cannot be coerced to type 'double”错误的方法。

程序员在 R 中可能面临的最常见错误之一是:

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

当我们尝试将多个元素的列表转换为数字而不使用 unlist()函数时,可能会发生此错误。

何时可能发生此错误:

我们先创建一个列表:

例子:

R
# Make a list
myList <- list(10:25, 16:29, 10:12, 25:26, 32)
 
# Print the list
myList


R
# Make a list
myList <- list(10:25, 16:29, 10:12, 25:26, 32)
 
# Convert list to numeric vector
numeric_vector <- as.numeric(x)


R
# Make a list
myList <- list(10:25, 16:29, 10:12, 25:26, 32)
 
# Convert list to numeric
numeric_vector <- as.numeric(unlist(x))
 
# Print the numeric equivalent
print(numeric_vector)


R
# Make a list
myList <- list(10:25, 16:29, 10:12, 25:26, 32)
 
# Convert list to numeric
numeric_vector <- as.numeric(unlist(x))
 
# Print the numeric equivalent
class(numeric_vector)


R
# Make a list
myList <- list(10:25, 16:29, 10:12, 25:26, 32)
 
# Convert list to numeric
numeric_vector <- as.numeric(unlist(x))
 
# Print the total number of
# elements in the list
sum(lengths(myList))
 
# Print the total number of
# elements in the vector
length(numeric_vector)


输出:

输出

现在我们将使用 as.numeric()函数将列表转换为其数值等效向量。该函数的语法如下:

R

# Make a list
myList <- list(10:25, 16:29, 10:12, 25:26, 32)
 
# Convert list to numeric vector
numeric_vector <- as.numeric(x)

输出:

输出

由于我们没有使用 unlist()函数,这就是编译器产生错误的原因:“无法强制键入 'double' 错误消息的对象”。

如何修复错误:

可以通过首先使用 unlist()函数将列表捆绑到向量中,然后将其传递给 numeric()函数来修复此错误。 unlist()函数的语法如下:

R

# Make a list
myList <- list(10:25, 16:29, 10:12, 25:26, 32)
 
# Convert list to numeric
numeric_vector <- as.numeric(unlist(x))
 
# Print the numeric equivalent
print(numeric_vector)

输出:

输出

例子:

要验证 numeric_vector 是否为 numeric 类型,我们可以使用 class()函数。类函数的语法如下:

R

# Make a list
myList <- list(10:25, 16:29, 10:12, 25:26, 32)
 
# Convert list to numeric
numeric_vector <- as.numeric(unlist(x))
 
# Print the numeric equivalent
class(numeric_vector)

输出:

输出

此外,为了验证 myList 和 numeric_vector 是否包含相等数量的元素,我们可以对 myList 使用 sum() 和 lengths()函数,对 numeric_vector 使用 length()函数。

sum()函数的语法如下:

R

# Make a list
myList <- list(10:25, 16:29, 10:12, 25:26, 32)
 
# Convert list to numeric
numeric_vector <- as.numeric(unlist(x))
 
# Print the total number of
# elements in the list
sum(lengths(myList))
 
# Print the total number of
# elements in the vector
length(numeric_vector)

输出:

输出