如何在 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()函数将列表转换为其数值等效向量。该函数的语法如下:
Syntax: as.numeric(vect)
Parameter: vect: a vector of characters
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()函数的语法如下:
Syntax: unlist(list)
Parameter: list: It represents a list in R
Return Type: Returns a 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
print(numeric_vector)
输出:
例子:
要验证 numeric_vector 是否为 numeric 类型,我们可以使用 class()函数。类函数的语法如下:
Syntax: class(x)
Parameter: Here, x represents a R object
Return Type: Returns the type of the passed object i.e, x (vector, list etc)
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()函数的语法如下:
Syntax: length(x)
Parameter: Here, x represents a R object like a vector or list
Return Type: Returns the number of elements present in 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 total number of
# elements in the list
sum(lengths(myList))
# Print the total number of
# elements in the vector
length(numeric_vector)
输出: