2017-10-05 110 views
0

我正在使用R进行作业,我在下面有下面的代码。向量B基本上是从向量a中的字符串中去除空白。然后,向量c将使用空格分割B中的字符串。然后,我要为c列表排序。但我必须将其转换为其他类型的简单原子向量。但是当我执行此操作时,出现下面的错误。R对错误的帮助

a <- c("Chpater 5 ", "Green Eggs and Ham", "Dr. Seuss ", "That Sam-I-am! ", "p. 25") 
a 
b<-str_trim (a, side = "both") 
b 

library (stringr) 

c<-str_split (b, pattern = " ") 
c 
sort (c) 
unlist (str_split (c, pattern = " ")) 

这是我从上面的代码得到的结果。

[1] "c(\"Chpater\"," "\"5\")"   "c(\"Green\"," "\"Eggs\","  
[5] "\"and\","  "\"Ham\")"  "c(\"Dr.\","  "\"Seuss\")"  
[9] "c(\"That\"," "\"Sam-I-am!\")" "c(\"p.\","  "\"25\") 
sort (c) 

但是,我没有得到变量c的排序,当我将c转换为简单的原子向量。下面是我得到的消息,当我跑这条线

> unlist (str_split (c, pattern = " ")) 
Error in stri_split_regex(string, pattern, n = n, simplify = simplify, : 
argument `str` should be a character vector (or an object coercible to) 
> sort (c) 
Error in sort.int(x, na.last = na.last, decreasing = decreasing, ...) : 
'x' must be atomic 
+0

这是因为变量'C'在'str_split()'是大写,而不是更低? – neilfws

+0

'c'和'C'不是同一个变量。尝试使用更多的描述性变量名称来提高清晰度,并且您将能够看到问题。 – mikeck

+0

我让c成为小写,但我仍然得到相同的错误。我添加了更多信息。 – cookiemonster

回答

2
## You need to unlist vector c and sort as below: 
sort(unlist(c)) 

#[1] "25"  "5"   "and"  "Chpater" "Dr."  "Eggs"  
#[7] "Green"  "Ham"  "p."  "Sam-I-am!" "Seuss"  "That" 
+0

非常感谢。它的工作 – cookiemonster

+1

很高兴为您提供帮助。 – Santosh