R 如何从apply()函数输出中获取行名称?
我正在学习R,并与世界银行的一些数据进行了比较。我在一个列切片中使用了apply函数,并对值应用了标准偏差,这样:result这里,sd返回一个值,当apply是MARGIN=2i,e时,我们得到一个命名向量。因此,namesout将获得名称,而不是row.names。使用内置数据集iris的可复制示例 如果我们需要一个data.frame作为输出,这可以直接通过data.frame调用创建 此外,这可以在tidyverse中完成 或者转换为列表和框架 我们可以使用堆栈将向量输出转换为数据帧R 如何从apply()函数输出中获取行名称?,r,apply,tibble,rowname,R,Apply,Tibble,Rowname,我正在学习R,并与世界银行的一些数据进行了比较。我在一个列切片中使用了apply函数,并对值应用了标准偏差,这样:result这里,sd返回一个值,当apply是MARGIN=2i,e时,我们得到一个命名向量。因此,namesout将获得名称,而不是row.names。使用内置数据集iris的可复制示例 如果我们需要一个data.frame作为输出,这可以直接通过data.frame调用创建 此外,这可以在tidyverse中完成 或者转换为列表和框架 我们可以使用堆栈将向量输出转换为数据帧 t
temp <- stack(apply(df[6:46],2,sd,na.rm=TRUE))
我们也可以将其用于sapply和lapply
谢谢你的帮助Ronak Shah你的解释让我头脑清醒。
out1 <- data.frame(val = out)
row.names(out1)
#[1] "Sepal.Length" "Sepal.Width" "Petal.Length" "Petal.Width"
data.frame(names = names(out), values = out)
library(dplyr)
library(tidyr)
iris %>%
summarise_if(is.numeric, sd, na.rm = TRUE) %>%
gather
# key value
#1 Sepal.Length 0.8280661
#2 Sepal.Width 0.4358663
#3 Petal.Length 1.7652982
#4 Petal.Width 0.7622377
library(tibble)
iris %>%
summarise_if(is.numeric, sd, na.rm = TRUE) %>%
as.list %>%
enframe
temp <- stack(apply(df[6:46],2,sd,na.rm=TRUE))
temp <- stack(apply(mtcars, 2, sd, na.rm = TRUE))
temp
# values ind
#1 6.02695 mpg
#2 1.78592 cyl
#3 123.93869 disp
#4 68.56287 hp
#5 0.53468 drat
#6 0.97846 wt
#7 1.78694 qsec
#8 0.50402 vs
#9 0.49899 am
#10 0.73780 gear
#11 1.61520 carb
stack(sapply(mtcars,sd, na.rm = TRUE))
#and
stack(lapply(mtcars,sd, na.rm = TRUE))