从用dplyr生成的1 x 1 Dataframe 中提取单个值作为向量?

ogsagwnx  于 2023-06-03  发布在  其他
关注(0)|答案(4)|浏览(357)

我试图从一个1x1data.frame中提取这个值,该帧是用dplyr作为一个向量生成的

示例

假设我们有

library(dplyr)

df <- iris %>% summarise(ifelse(tally(.) == 150, 1, 0))

df
#   n
# 1 1

我期望df[1,1]返回期望的结果[1] 1(即向量),但是,相反,它返回一个矩阵。

> df[1,1]
     n
[1,] 1

注意事项

  • 有点奇怪的是,当我们手动创建一个类似的data.frame时,我们***可以***以.[1,1]的向量形式检索值。
> data.frame(n=1) -> b
> b[1,1]
[1] 1
35g0bw71

35g0bw711#

你可以使用df[[1,1]]得到向量
输出量

> df[[1,1]]
[1] 1

这里有一个简单的例子,解释了它是如何使用测试数据工作的

df1 <- data.frame(a = c(1,2,3), b = c(4,5,6))

输出量

> df1['a']
  a
1 1
2 2
3 3
> df1[['a']]
[1] 1 2 3
wpcxdonn

wpcxdonn2#

除了@sachin的回答,另外两种方法也可能奏效

df %>% as.numeric
[1] 1

和/或

df %>% unlist %>% unname
[1] 1
ttygqcqt

ttygqcqt3#

老帖子,但添加了dplyr解决方案。

df_num <- iris %>% 
  summarise(ifelse(tally(.) == 150, 1, 0)) %>% 
  unlist() %>% 
  as.numeric()
m3eecexj

m3eecexj4#

一个简单的c + t组合就可以管理它

> c(t(df))
[1] 1

相关问题