r - R 编程错误 : Need help to fix it

标签 r

m <- read.table(row.names=1, header=TRUE, text=
"           Assignment          Caused by CI          Quality Indicator          Update           Operator Update         Description Update
Assignment 0.0  0.0  0.49  0.0  0.0 0.0
Caused by CI 0.0  0.0 0.0  0.0  0.0 0.0
Quality Indicator 0.0 0.75  0.0  0.0 0.0 0.0
Update 0.0  0.0  0.0  0.0 0.0 0.0
Operator Update 0.0  0.0 0.0 0.0  0.0 0.0
Description Update 0.0  0.0  0.0  0.0  0.0 0.0")

上面只有六列,但它标识为11,因为有些列名有空格。 [如何解决]

Error Message: Error in scan(file, what, nmax, sep, dec, quote, skip, nlines, na.strings,  : 
  line 1 did not have 11 elements

m <-as.matrix(m)

最佳答案

您可以做几件事。您可以手动为包含多个单词的名称添加引号。

text <- "Assignment 'Caused by CI' 'Quality Indicator' Update 'Operator Update' 'Description Update'
Assignment 0.0  0.0  0.49  0.0  0.0 0.0
'Caused by CI' 0.0  0.0 0.0  0.0  0.0 0.0
'Quality Indicator' 0.0 0.75  0.0  0.0 0.0 0.0
Update 0.0  0.0  0.0  0.0 0.0 0.0
'Operator Update' 0.0  0.0 0.0 0.0  0.0 0.0
'Description Update' 0.0  0.0  0.0  0.0  0.0 0.0"

read.table(row.names = 1, header = TRUE, text = text, check.names = FALSE)
#                    Assignment Caused by CI Quality Indicator Update Operator Update Description Update
# Assignment                  0         0.00              0.49      0               0                  0
# Caused by CI                0         0.00              0.00      0               0                  0
# Quality Indicator           0         0.75              0.00      0               0                  0
# Update                      0         0.00              0.00      0               0                  0
# Operator Update             0         0.00              0.00      0               0                  0
# Description Update          0         0.00              0.00      0               0                  0

请注意,check.names = FALSE 是可选的,并且可能会使工作变得更加困难,因为您需要对名称进行反引号。但这样做的好处是数据的显示与输入的完全一样。

以编程方式(并且可能是推荐的做法),您可以先删除单词之间的空格,然后读入数据。以下部分我使用了原文。

text <- "          Assignment          Caused by CI          Quality Indicator          Update           Operator Update         Description Update
Assignment 0.0  0.0  0.49  0.0  0.0 0.0
Caused by CI 0.0  0.0 0.0  0.0  0.0 0.0
Quality Indicator 0.0 0.75  0.0  0.0 0.0 0.0
Update 0.0  0.0  0.0  0.0 0.0 0.0
Operator Update 0.0  0.0 0.0 0.0  0.0 0.0
Description Update 0.0  0.0  0.0  0.0  0.0 0.0"

read.table(text = gsub("([A-Za-z]) ([A-Za-z])", "\\1\\2", text))
#                   Assignment CausedbyCI QualityIndicator Update OperatorUpdate DescriptionUpdate
# Assignment                 0       0.00             0.49      0              0                 0
# CausedbyCI                 0       0.00             0.00      0              0                 0
# QualityIndicator           0       0.75             0.00      0              0                 0
# Update                     0       0.00             0.00      0              0                 0
# OperatorUpdate             0       0.00             0.00      0              0                 0
# DescriptionUpdate          0       0.00             0.00      0              0                 0

关于r - R 编程错误 : Need help to fix it,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32555257/

相关文章:

r - 从索引向量创建二元邻接矩阵

r - 粘贴中“collapse”的缩写?

R:unequi join 与合并功能

r - 如何在R中使用中断进行切割

r - 缩小使用 R 中的传单创建的世界地图时的多个世界副本

python - 从 r 过渡到 Python - pandas 中类似 dplyr 的操作

从数据框中有条件地删除行

r - 时间为00时xts的显示格式 :00

r - 如何在 r 中选择特定列并删除然后在其末尾添加字符串

R dplyr按范围或虚拟列联接