r - 当其值都相同时,列类型更改为“未知”
问题描述
当我创建数据框时,每行中具有相同值的列会自动设置为“未知”类型,并且无法更改它。
下面是一个示例,以便您更好地理解:
data <- data.frame(c(1,1,1,1), c(1:4), c(4:1))
colnames(data) <- c("Not Working", "Ok", "Ok")
这种数据框的第一列(“不工作”)填充了相同的值(全为 1)。当您运行代码时,您会注意到它的类型是“未知”,而其他类型则自动设置为“数字”。
但是,如果您尝试更改它,则没有任何效果。例如:
data$`Not Working` <- as.numeric(data$`Not Working`)
data$`Not Working` <- as.numeric(as.character(data$`Not Working`))
您将看到使用这两个代码字符串的列类型仍然相同。既不使用括号而不是美元符号来改变任何东西。每当一列的所有值都相等时,就会发生这种情况。我还尝试先将数据框转换为矩阵,然后再转换为数据框,或者先将列转换为因子(即使对于我的特定类型的数据没有意义),然后再转换为数字,但没有任何效果。
虽然这对于经典的 R 脚本来说不是问题,但当我尝试编织文件时它变得至关重要,返回以下错误:
"Error [...]: replacement has length zero"
经过几次测试,我发现错误是特定于应该是数字的列类型。我已经正确安装了 R markdown 和 Latex,所以应该没什么。
有谁知道为什么会发生这种情况以及是否有办法解决它?它看起来像一个错误或其他东西,但我已经尝试将程序更新为最新版本,但没有任何变化。
解决方案
首先,您不应该有两个具有相同名称的列。我建议您使用tibble
来创建数据框。
library(tibble)
data <- tibble("Not Working" = c(1,1,1,1), "Ok" = c(1:4), "Oki" = c(4:1))
sapply(data, class) #check the data types
如果您想将列的数据类型更改为特定的内容,您可以轻松地指定它。
data <- tibble("Not Working" = as.character(c(1,1,1,1)), "Ok" = c(1:4), "Oki" = c(4:1))
推荐阅读
- uml - 将一个端点链接到另一个端点
- multi-tenant - MassTransit - 发送和发布:介于两者之间
- javascript - AJAX 中的循环处理(同步)
- android - DatePicker 对话框,带有来自 edittext 的预选值
- c# - MvvmCross Xamarin IOS“找不到 ViewModel 的视图”
- python - Pandas AttributeError:“DataFrame”对象没有属性“Datetime”
- sql - rsh远程命令在端口上运行
- wordpress - 订阅确认后,WordPress 时事通讯插件重定向到上一页
- docker - 如何在不同的容器内连接mysql和php?
- javascript - 如何使用 javascript 处理嵌套的 iframe?