R编程错误:需要帮助解决

3
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)
1个回答

4

你可以采取几种方法。手动添加引号是其中一种,特别是对于那些包含多个单词的名称。

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接