问题是你的专栏是factor:
items <- structure(list(V1 = structure(c(4L, 3L, 1L, 2L, 5L, 6L),
.Label = c("Am f?cut multe din lucrurile pe care mi le-am dorit.",
"Am sentimente calde fa?? de ceilal?i.", "Nu sunt interesat de al?i oameni. (I) ",
"Nu sunt mul?umit de felul în care sunt. (I)", "Rareori m? trezesc odihnit. (I)",
"Sunt pesimist în leg?tur? cu viitorul. (I)"),
class = "factor")),
.Names = "V1",
row.names = c(NA, -6L),
class = "data.frame")
x <- structure(list(SSB1 = c(6L, 6L, 6L, 6L, 6L, 3L),
SSB2 = c(5L, 6L, 5L, 6L, 6L, 1L),
SSB3 = c(5L, 4L, 4L, 6L, 6L, 5L),
SSB4 = c(6L, 4L, 5L, 6L, 6L, 6L),
SSB5 = c(5L, 1L, 4L, 5L, 3L, 4L),
SSB6 = c(6L, 3L, 6L, 6L, 2L, 2L),
SSB7 = c(4L, 1L, 2L, 4L, 3L, 2L),
SSB8 = c(5L, 4L, 4L, 6L, 5L, 6L),
SSB9 = c(6L, 4L, 6L, 6L, 4L, 4L),
SSB10 = c(6L, 5L, 6L, 1L, 4L, 4L)),
.Names = c("SSB1", "SSB2", "SSB3", "SSB4", "SSB5",
"SSB6", "SSB7", "SSB8", "SSB9", "SSB10"),
class = "data.frame",
row.names = c("1", "2", "3", "4", "5", "6"))
class(items[,1])
## [1] "factor"
paste("\"", items[1,], "\"", sep = "")
## [1] "\"Nu sunt mul?umit de felul în care sunt. (I)\""
简单的paste 函数可以正常工作,但是当您尝试将其分配回同一行时(顺便说一句,您应该更明确,使用item[i,1] 而不仅仅是item[i,],特别是如果您打算折叠字符串):
items[1,] <- paste("\"", items[1,], "\"", sep = "")
## Warning in `[<-.factor`(`*tmp*`, iseq, value = "\"Nu sunt mul?umit de felul în care sunt. (I)\"") :
## invalid factor level, NA generated
注意:我们需要重新加载项目,因为我们刚刚损坏了第一行。
问题在于paste 命令产生的字符串未被识别为因子的级别之一。
levels(items[,1])
## [1] "Am f?cut multe din lucrurile pe care mi le-am dorit."
## [2] "Am sentimente calde fa?? de ceilal?i."
## [3] "Nu sunt interesat de al?i oameni. (I) "
## [4] "Nu sunt mul?umit de felul în care sunt. (I)"
## [5] "Rareori m? trezesc odihnit. (I)"
## [6] "Sunt pesimist în leg?tur? cu viitorul. (I)"
paste("\"", items[1,], "\"", sep = "")
## [1] "\"Nu sunt mul?umit de felul în care sunt. (I)\""
为了将任意字符串分配到此factor-ized 列,您必须 (a) 确保您分配的字符串与定义的级别之一相同,(b) 将级别添加到列以考虑您的新字符串(可能效率不高,也可能不是您想要做的),或者(c)在您开始之前将整个列转换为character。前两个效率低下且 (IMO) 不必要,但如果我误解了您的需求,请告诉我。
对于(c):
items[,1] <- as.character(items[,1])
items[1,] <- paste("\"", items[1,], "\"", sep = "")
items
## V1
## 1 "Nu sunt mul?umit de felul în care sunt. (I)"
## 2 Nu sunt interesat de al?i oameni. (I)
## 3 Am f?cut multe din lucrurile pe care mi le-am dorit.
## 4 Am sentimente calde fa?? de ceilal?i.
## 5 Rareori m? trezesc odihnit. (I)
## 6 Sunt pesimist în leg?tur? cu viitorul. (I)
TL;DR;
在使用粘贴之前,您必须先将(您的列)转换为字符串。