如何在R中将数组转换为向量?

3

我有一个包含11个元素的变量。我想将其定义为数组,但无论我做什么,它的类始终是"character"。

> WI[1,]
 [1] ""                                                        
 [2] ""                                                        
 [3] ""                                                        
 [4] ""                                                        
 [5] ""                                                        
 [6] ""                                                        
 [7] "idea rejected ( first reviewer ) "                       
 [8] "rejected ,    team    token   reward  recognition scheme"
 [9] "idea/0000/0000"                                                                                                  
> foo=WI[1,]

> dim(foo)
NULL
> length(foo)
[1] 9
> class(foo)
[1] "character"
> class(as.vector(foo))
[1] "character"

> as.vector(foo)
 [1] ""                                                        
 [2] ""                                                        
 [3] ""                                                        
 [4] ""                                                        
 [5] ""                                                        
 [6] ""                                                        
 [7] "idea rejected ( first reviewer ) "                       
 [8] "rejected ,    team    token   reward  recognition scheme"
 [9] "idea/0000/0000"                                          

我尝试了很多不同的方法,但它们都失败了。 我该怎么办?如何将它们转换成数组或单列呢?非常感谢!


我认为你对R中的基本数据类型有些困惑。你是指一个一列矩阵,即具有两个维度(行和列)的东西吗? - joran
R常见问题解答中关于基本数据类型的部分可能对您有用:http://cran.r-project.org/doc/manuals/r-release/R-lang.html#Vector-objects - thelatemail
@joran 由于 > dim(foo) NULL ,我认为 foo 不是一个矩阵。(实际上,“foo” 是我从一个矩阵中提取的一行) - user3552733
@joran 请再检查一下代码,我已经添加了一些信息。 - user3552733
我并没有暗示foo是一个矩阵;很明显它是一个向量(1维)。我试图澄清你的需求,因为你的术语表述不够清晰。例如,你下面的“答案”得到的是一个数据框,既不是数组也不是矩阵,但这却是你问题所要求的。 - joran
2个回答

2

如果你想将它转换为数组,可以使用array()函数。

contents = sample(c("", "saf", "fsf"), 10, replace = T)
array(contents)

如果您想将其转换为矩阵,则可以:

matrix(contents, ncol = 1)

4
既然提问者已经对R中的数据类型感到困惑,您应该明确指出R中矩阵和数组之间唯一的区别是矩阵始终具有2个维度,而数组可以具有1、2或更多维。大多数人实际上不会在只需要处理两个维度的情况下使用array(作为一种约定)。 - joran
@joran 感谢您指出我的困惑。我的问题与此链接相同,但我在那里找不到任何解决方案。我已经尝试了我所能想到的一切。您能告诉我如何将数组转换为向量吗?非常感谢! - user3552733

-4

我现在找到了解决方案。虽然有些笨拙,但确实有效。我希望有人能提供更简单的方法来得到更好的答案。

> as.data.frame(t(foo),stringsAsFactors=F)
  V1 V2 V3 V4 V5 V6                                V7
1                   idea rejected ( first reviewer ) 
                                                        V8             V9 
1 rejected ,    team    token   reward  recognition scheme idea/0000/0000        
> dim(as.data.frame(t(foo),stringsAsFactors=F))
[1]  1 9
> dim(unlist(as.data.frame(t(foo),stringsAsFactors=F)))
NULL
> length(unlist(as.data.frame(t(foo),stringsAsFactors=F)))
[1] 9

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