相关疑难解决方法(0)

如何将矩阵子集化为一列,维护矩阵数据类型,维护行/列名称?

当我将矩阵子集化为单个列时,结果是类数字,而不是矩阵(即myMatrix [,5]到第五列的子集).是否有一种紧凑的方法可以将单个列子集化,维护矩阵格式,并维护行/列名称,而无需执行以下操作:

matrix( myMatrix[ , 5 ] , dimnames = list( rownames( myMatrix ) , colnames( myMatrix )[ 5 ] )
Run Code Online (Sandbox Code Playgroud)

r matrix subset r-faq

71
推荐指数
1
解决办法
3万
查看次数

在R中,如果数据帧只有一列,为什么从数据帧中选择行会将数据作为向量返回?

假设我们想要逐行访问数据.示例是简化的,但是当按行名称排序数据框时,例如,(df[order(row.names(df)])我们使用相同的技术.

如果数据框有一列,我们得到一个原子向量:

> df
    x1
a   x
b   y
c   z

> df[1, ] # returns atomic vector
[1] x 
Run Code Online (Sandbox Code Playgroud)

如果数据框有两列,我们会返回包含行名的1行数据帧:

> df
    x1 x2
a   x  u
b   y  v
c   z  w 

> df[1, ] # returns data frame
   X1 X2
a  x  u 
Run Code Online (Sandbox Code Playgroud)

我不明白为什么数据帧上的相同操作会产生两种类型的结果,具体取决于帧的列数.

r dataframe

5
推荐指数
1
解决办法
1117
查看次数

为什么具有1列的R表与具有多于1的列的访问方式不同?

似乎在访问具有1列的表时,访问的操作会抛弃列信息.如果有超过1列,则保留此信息.

例如

表中有1个项目:

> example1 <- data.frame( items = c("A","B","B","C","C","C","C")
+                       , time = ISOdate(2222,1,1) )
> table1 <- table(example1)
> table1
     time
items 2222-01-01 12:00:00
    A                   1
    B                   2
    C                   4

> barplot(table1, legend=T)
> table1.ordered <- table1[c(3,2,1),]   # reorder
> table1.ordered
C B A 
4 2 1 
> barplot(table1.ordered, legend=T) # time column thrown away
Run Code Online (Sandbox Code Playgroud)

现在表中有2个项目 :( 在此示例中添加到example1)

> example2 <- rbind(example1 , data.frame(items = NA, time = ISOdate(3333,1,1)) )
> example2
  items                time
1 …
Run Code Online (Sandbox Code Playgroud)

r

5
推荐指数
1
解决办法
833
查看次数

标签 统计

r ×3

dataframe ×1

matrix ×1

r-faq ×1

subset ×1