R 我可以在数据帧中使用unlist函数吗?
我正在处理一个列表,其中包含文本中的单词和对它们进行分类的标记。我本应该还原一个旧字母,为此我只需要提取向量中的单词,所以我没有使用sapply,而是这样做了: 单词如@Gregor注释,data.frames是列表。考虑下面的例子:R 我可以在数据帧中使用unlist函数吗?,r,list,function,dataframe,R,List,Function,Dataframe,我正在处理一个列表,其中包含文本中的单词和对它们进行分类的标记。我本应该还原一个旧字母,为此我只需要提取向量中的单词,所以我没有使用sapply,而是这样做了: 单词如@Gregor注释,data.frames是列表。考虑下面的例子: df <- data.frame(Col1 = LETTERS[1:5], Col2 = 1:5, stringsAsFactors = FALSE) is.list(df) #[1] TRUE 但是,在对data.frame进行子集设置时必须小心,因为根
df <- data.frame(Col1 = LETTERS[1:5], Col2 = 1:5, stringsAsFactors = FALSE)
is.list(df)
#[1] TRUE
但是,在对data.frame进行子集设置时必须小心,因为根据使用的方法,可能无法获得列表
df["Col2"]
# Col2
#1 1
#2 2
#3 3
#4 4
#5 5
is.list(df["Col2"])
#[1] TRUE
df[,"Col2"]
#[1] 1 2 3 4 5
is.list(df[,"Col2"])
#[1] FALSE
is.list(df[["Col2"]])
#[1] FALSE
is.list(df$Col2)
#[1] FALSE
is.list(subset(df,select = Col2))
#[1] TRUE
然而,据我所知,将整行子集总是返回一个列表
df[1,]
# Col1 Col2
#1 A 1
is.list(df[1,])
#[1] TRUE
is.list(subset(df,1:5 == 1))
#[1] TRUE
我们可以使用dput函数查看单行底层结构的文本表示:
dput(df[1,])
#structure(list(Col1 = "A", Col2 = 1L), row.names = 1L, class = "data.frame")
正如我们所看到的,即使是一行也显然是一个列表。因此,我们可以合理地取消该行的列表,就像取消任何不同时也是data.frame的列表一样
数据帧是列表,只是有更多的需求。在数据框上运行is.list。您可能还对unnameThanks感兴趣-我想这是我今天的全部内容;
dput(df[1,])
#structure(list(Col1 = "A", Col2 = 1L), row.names = 1L, class = "data.frame")
unlist(df[1,], use.names = FALSE)
#[1] "A" "1"
unlist(list(Col1 = "A", Col2 = 1L), use.names = FALSE)
#[1] "A" "1"