虽然我的不是原子矢量,但我仍然得到错误:" $运算符对原子矢量无效"

时间:2015-10-21 01:17:20

标签: r indexing dataframe text-mining

我试图在csv数据文件上执行文本挖掘。

我提到的来源是在Twitter数据上执行的。但我想对存储在csv中的文本数据做类似的事情。

我正在尝试以下代码:

data <- read.csv("Joined_Tab.csv")
dtweets <- data[1:30,]

for(i in 1:20)
{
  cat(paste("[ [", i, "] ]", sep=""))
  writeLines(strwrap(dtweets[[i]]$getText(), width=25))
}

此处datadtweets都是数据框。但是,当我尝试使用getText()时,我收到以下错误:

Error in dtweets[[i]]$getText : $ operator is invalid for atomic vectors

但是数据帧不是原子矢量。 (我也尝试将数据帧转换为列表,仍然是相同的错误,尽管列表也不是原子向量)

以下是str()

'data.frame': 30 obs. of 2 variables: 
  $ S.No : int 1 2 3 4 5 6 7 8 9 10 ... 
  $ Tweet: chr "Good cooperation" "engaged team u always get valuable support" "Still klm with domain specific dcm helps to attract clients" "Support with gdp also on short note works nice"

我哪里错了?

是否有更好的方法在csv文件中执行文本挖掘?

我是R的初学者所以请相应地建议我。感谢。

1 个答案:

答案 0 :(得分:0)

当您在data.frame(也是列表)上使用[[运算符时,您会得到相应的变量,因此dtweets[[1]]会给出数字(1 2 3 ...)和{ {1}}为您提供推文(“良好合作”,......)。对于大于2的dtweets[[2]],您应该收到错误(i),因为没有更多变量。 此外,使用Error in .subset2(x, i, exact = exact) : subscript out of bounds后,结果是一个向量!不再是data.frame了!此外,您在tweets[[2]]之后放置的内容应该是一个函数。在R中,函数需要对括号进行求值,即使没有参数也是如此。 因此,即使$会为您提供可以使用dtweets[[i]]建立索引的内容,并且该子项名为$,您也需要引号:getText()索引特殊字符。我猜它getText实际上是一个函数,所以你需要像dtweets[[i]]$'getText()'这样的东西。除非您显示getText(dtweets[i,2])函数的代码,否则这是猜测。