我正在学习R语言,并使用了一些世界银行的数据。我在列的一个切片中使用了apply()函数,并对值应用了标准差,如下所示:result <- apply(df[6:46],2,sd,na.rm=TRUE)
。
结果是一个有两列的对象,没有标题,一列是所有被选中的tibble列的名称,另一列是每列的标准差。当我在输出中使用typeof()命令时,结果是'double'
。R文档说apply()的输出是一个向量,数组或列表。
我需要知道这一点,因为我想提取所有的行名称,并使用命令rownames(result)
抛出输出NULL
。我可以做什么来提取这个对象的行名称?
尝试了rownames(result)
和row.names(result
,没有一个工作。
2条答案
按热度按时间e0bqpujr1#
我们可以使用
stack
将vector输出转换为dataframe。现在,我们可以访问所有具有
temp$ind
的列名和temp$values
中的sd
的值。以
mtcars
为例,我们还可以将其用于
sapply
和lapply
tkqqtvp12#
在这里,
sd
返回一个值,并且由于apply
与MARGIN = 2
i,e按列排列,我们得到一个命名的vector
。因此,names(out)
将得到names
而不是row.names
。使用内置数据集iris
的可重复示例此外,通过将
apply
的输出 Package 为data.frame
,我们可以使用row.names
如果我们需要一个
data.frame
作为输出,这可以直接用data.frame
调用创建。此外,这可以在
tidyverse
中完成或转换为
list
和enframe