当我创建一个数据框时,每行中具有相同值的列会自动设置为键入“未知”,并且无法更改它。
以下是您更好理解的示例:
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,所以应该没什么。
有人知道为什么会这样吗?是否有办法解决?它看起来像个错误或类似的东西,但是我已经尝试将程序更新为最新版本,但是没有任何变化。
答案 0 :(得分:1)
首先,您不应有两个具有相同名称的列。我建议您使用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))