Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/77.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用R从数据帧中子集表列_R_Dataframe - Fatal编程技术网

使用R从数据帧中子集表列

使用R从数据帧中子集表列,r,dataframe,R,Dataframe,下面数据框中的一列(new)是一个表 #dput(头部(df1)) 结构(列表a=c(1,2,3,4,5,7),b=c(2,3,3,5,5, 7) ,c=c(1,3,2,4,5,7),new=list(结构)(2:1,.Dim=2L,.Dimnames=structure(列表( c(“1”、“2”)、.Names=“”)、class=“table”)、结构(1:2、.Dim=2L、.Dimnames=structure(列表( c(“2”,“3”),.Names=“”),class=“tabl

下面数据框中的一列(
new
)是一个表

#dput(头部(df1))
结构(列表a=c(1,2,3,4,5,7),b=c(2,3,3,5,5,
7) ,c=c(1,3,2,4,5,7),new=list(结构)(2:1,.Dim=2L,.Dimnames=structure(列表(
c(“1”、“2”)、.Names=“”)、class=“table”)、结构(1:2、.Dim=2L、.Dimnames=structure(列表(
c(“2”,“3”),.Names=“”),class=“table”),结构(1:2,.Dim=2L,.Dimnames=structure(列表(
c(“2”,“3”),.Names=“”),class=“table”),结构(2:1,.Dim=2L,.Dimnames=structure(列表(
c(“4”,“5”),.Names=“”),class=“table”),结构(c(`5`=3L),.Dim=1L,.Dimnames=structure(list(
“5”),.Names=“”),class=“table”),结构(c(`7`=3L),.Dim=1L,.Dimnames=structure(list(
“7”),.Names=“”),class=“table”)),row.Names=c(NA,
6L),class=“数据帧”)
new
列是
apply(df1,1,table)
的结果。 使用
df1[4,“new”][[1]]
生成以下输出

df1[4,“新”][[1]]
#4.5-->VAL
#2 1-->频率
我想制定一个条件,比如给我所有
Vals
,其中
new
列中的
Freq
大于或等于某个条件,并使用它来子集
new

下面是一个例子,以及我到目前为止所做的工作

df1[4,“新”][[1][]>=2
#    4     5 
#真假
#使用上述逻辑规则进行子集设置
as.integer(名称(df1[4,“新”][[1]][df1[4,“新”][[1]][]]>=2]))
#[1] 4
结果正是我所期望的。然而,它是冗长的,如果有一个较短的版本,我会很高兴(目前这不是一个紧迫的问题,尽管我会很感激,也很高兴能学会写清楚简洁的句子)

我面临的紧迫问题是如何将条件
修改为.integer(名称(df1[4,“new”][[1]]][df1[4,“new”][[1]][]>=2])
并将其应用于整个列。例如,对于条件列new
==3
5
7
是预期的输出

我看过类似的文章,但没有帮助我弄明白如何将子集条件应用于一个列,即一个表


多谢各位

调查对象(即列)的
,得到
“列表”

通常我们使用例如
lappy()
函数将函数应用于列表的元素。为了获得向量或矩阵而不是列表,我们可以尝试
sapply

那么,定义你的条件

COND <- 2

你能确切地说明你想要归还什么吗?如果条件>3,是否要返回最后两行?还是只包含5和7的向量?如果条件>=2怎么办?你能把所有的行都还回去吗?谢谢。我想要的输出就是
5
7
;当条件为
=2
时,将从满足条件的
new
列中获得特定值(
names
)。感谢并指出我必须
unlist
以获得与您类似的输出,这正是我想要的。非常感谢。
COND <- 2
sapply(df1$new, function(x) as.numeric(names(x[x >= COND])))
# [1] 1 3 3 4 5 7