取消列出R中多个元素的列表

问题描述 投票:1回答:2

我已经从twitter中提取了数据,它显示为List列(运行代码后会得到什么)。我希望输出显示为“损坏”列中的内容。

Image for data

data <- data.frame(matrix(, nrow=4, ncol=2))
colnames(data)[1:2] <- c("List", "Broken")
data$List[1] <- 1
data$List[2] <- list(c("1", "SmythsToysUK"))
data$List[3] <- list(c("1", "FortniteGame", "CityCtrMirdif", "itpliveme"))
data$List[4] <- 1
data$Broken[1:4]<- c("SmythsToysUK","FortniteGame","CityCtrMirdif","itpliveme")
r list
2个回答
0
投票

我们可以从List栏中删除所有数字。

temp <- unlist(data$List)
data$Broken <- temp[is.na(as.numeric(temp))]
data

#                                       List        Broken
#1                                         1  SmythsToysUK
#2                           1, SmythsToysUK  FortniteGame
#3 1, FortniteGame, CityCtrMirdif, itpliveme CityCtrMirdif
#4                                         1     itpliveme

0
投票

我们可以将grepunlist结合使用。在unlist设置为list之后,仅选择具有字母的元素

data$Broken <- grep("[A-Za-z]", unlist(data$List), value = TRUE)
data$Broken
#[1] "SmythsToysUK"  "FortniteGame"  "CityCtrMirdif" "itpliveme"   

或者另一个选择是删除似乎是索引的第一个元素,然后删除unlist

unlist(sapply(data$List, `[`, -1))

注意:这两个选项都没有任何警告

© www.soinside.com 2019 - 2024. All rights reserved.