R 检索子集后面的名称(表),其中只有1个观察值
我的问题是,当我在对表进行子集设置后尝试检索R 检索子集后面的名称(表),其中只有1个观察值,r,R,我的问题是,当我在对表进行子集设置后尝试检索names(myresults)时,当返回的子集只有一个结果时,我会得到null。r返回一个整数(在本例中为1),而不是返回行名称的字符向量 这是一张桌子 head(tbl) 1 2 3 4 5 6 afford 0 1 0 0 0 0 app 0 0 0 1 0 0 back 0 1 0 0 0 0 cancel 0 0 0 0 1 0
names(myresults)
时,当返回的子集只有一个结果时,我会得到null。r返回一个整数(在本例中为1),而不是返回行名称的字符向量
这是一张桌子
head(tbl)
1 2 3 4 5 6
afford 0 1 0 0 0 0
app 0 0 0 1 0 0
back 0 1 0 0 0 0
cancel 0 0 0 0 1 0
charg 0 0 0 0 0 1
download 0 0 0 0 0 1
我已经在一个循环中对表进行了子集设置,以便为每个组返回一个表。如果某个术语属于某个组,则其值为1:
for (i in 1:ncol(tbl)) {
t <- tbl[which(tbl[,i]==1),i]
nam <- names(t)
df <- as.data.frame(nam)
names(df) <- paste0("Cluster ",i)
print(kable(df))
}
因此,我可以为tbl[,3]
获取names(t)
,其中它有3个返回的实例,但对于只有1个的tbl[,4]
则没有
> t <- fintab[which(fintab[,4]==1),4]
> names(t)
NULL # expected "app"
> t <- fintab[which(fintab[,4]==1),4]
> names(t)
[1] "aword" "cat" "dog"
及
当我们对单个列进行子集设置时,我们会得到逻辑索引(
tbl[,4]==1
——除非存在NAs,否则无需使用which
进行包装。在这种情况下,which
删除这些NAs)并使用它对列向量进行子集设置
tbl[,4][tbl[,4]==1]
# app
# 1
tbl[,3][tbl[,3]==1]
# cat blabla time
# 1 1 1
什么是
tbl
?这是一个matrix/table/data.frame
?嗨,上下文:如果你显示tbl的dput
,我会是tbl,我们可以使用drop=FALSE
它也会有名称tbl[tbl[,4]==1,4,drop=FALSE]
即行名称(tbl[tbl[,4]==1,4,drop=FALSE])#[1]“应用程序”
谢谢,但是您的评论中的drop=FALSE怎么办?我抬头看了看,但什么也没看到。drop=FALSE做什么,因为它起作用了too@DougFir它将确保原始尺寸不会下降。适用于矩阵/data.frame/table等当有单列/单行时,它会下降到一个向量。更多信息可在?“[”
> str(tbl)
'table' int [1:33, 1:6] 0 0 0 0 0 0 0 0 0 0 ...
- attr(*, "dimnames")=List of 2
..$ : chr [1:33] "aword" "app" "cat" "dog" ...
..$ : chr [1:6] "1" "2" "3" "4" ...
>
> dput(tbl)
structure(c(0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
1L, 0L, 0L, 0L, 1L, 0L, 1L, 0L, 0L, 0L, 0L, 1L, 0L, 0L, 0L, 0L,
1L, 0L, 1L, 1L, 0L, 0L, 1L, 0L, 1L, 1L, 0L, 1L, 1L, 0L, 1L, 0L,
1L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 0L, 0L, 0L, 0L,
1L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 0L, 0L, 0L, 0L, 1L,
0L, 0L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 1L, 1L, 0L,
0L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 1L, 0L, 1L, 0L, 0L, 0L, 0L,
0L, 1L, 0L, 0L, 0L, 0L, 0L, 1L, 1L), .Dim = c(33L, 6L), .Dimnames = structure(list(
c("aword", "app", "back", "cancel", "charg", "download",
"enough", "expens", "get", "great", "just", "like", "love",
"cat", "dog", "bla", "month", "much", "need",
"never", "phone", "pleas", "blabla", "realli", "term", "sign",
"thank", "time", "triangle", "use", "want", "will", "work"), c("1",
"2", "3", "4", "5", "6")), .Names = c("", "")), class = "table")
tbl[,4][tbl[,4]==1]
# app
# 1
tbl[,3][tbl[,3]==1]
# cat blabla time
# 1 1 1