R包括数据帧中的字符串列表
我试图为维基百科用户所做的每一次编辑创建一个人工数据框,由用户贡献和删除的单词组成,最终结果如下所示: 我创建了一些人工数据来构建这样一个框架,但变量“Tokens Added”和“Tokens deleted”有问题 我认为将它们创建为列表列表将允许我将它们包括在数据帧中,即使元素的长度并不总是相等。但显然情况并非如此。相反,R为每个令牌创建一个变量。这是不可行的,因为它会产生数百万个变量。下面是一些代码示例:R包括数据帧中的字符串列表,r,list,dataframe,R,List,Dataframe,我试图为维基百科用户所做的每一次编辑创建一个人工数据框,由用户贡献和删除的单词组成,最终结果如下所示: 我创建了一些人工数据来构建这样一个框架,但变量“Tokens Added”和“Tokens deleted”有问题 我认为将它们创建为列表列表将允许我将它们包括在数据帧中,即使元素的长度并不总是相等。但显然情况并非如此。相反,R为每个令牌创建一个变量。这是不可行的,因为它会产生数百万个变量。下面是一些代码示例: a <- c(1,2,3) e <- list(b = as.lis
a <- c(1,2,3)
e <- list(b = as.list(c("a","b")),c = as.list(c(1L,3L,5L,4L)),d = as.list(c(TRUE,FALSE,TRUE)))
DF <- cbind(a,e)
U <- data.frame(a,e)
a试试这个:
cbind(a,lapply(e,function(x) paste(unlist(x),collapse=",")))
我不认为你想要什么是可能的使用一个向量的列表(正如你在你的问题中所建议的)。这主要是因为无法在R中创建列表向量(请参见:)
但是,一个选项(如果您确实需要data.frame
)是将所有内容强制为一个字符(R中最灵活的类型)。这样的东西可能适合你:
e <- c(paste0(c("a","b"),collapse=","), paste0(c(1L,3L,5L,4L), collapse = ","), paste0(c(TRUE,FALSE,TRUE), collapse = ","))
U <- data.frame(a,e, stringAsFactors = F)
U
# a e
#1 1 a,b
#2 2 1,3,5,4
#3 3 TRUE,FALSE,TRUE
如果您愿意使用库(tibble)
,您可以完全按照自己的意愿进行操作:
库(TIBLE)
谢谢大家的建议!我想我找到了一个更简单的解决办法。以防将来有人遇到类似问题,我就是这么做的:
a <- c(1,2,3)
b <- c("a","b")
c <- c(1L,3L,5L,4L)
d <- c(TRUE,FALSE,TRUE)
e <- list(b,c,d);e
DF <- data.frame(a,I(e));DF
a我认为这在你想要的意义上是不可能的<代码>数据。帧是等长向量的列表。你需要做/想做的是创建一个列表向量。据我所知,这是不可能的(见)一个不同的选择将是让每个元素都是一个字符,但只是一个粘贴在一起的列表将是什么样的建议银行版本!但如果我在我的示例中尝试它,它只会产生以下错误:error:变量的长度必须为1或9。问题变量:“a”
library(tibble)
a <- c(1,2,3)
e <- list(b = as.list(c("a","b")),c = as.list(c(1L,3L,5L,4L)),d = as.list(c(TRUE,FALSE,TRUE)))
tibble(a,e)
# A tibble: 3 × 2
a e
<dbl> <list>
1 1 <list [2]>
2 2 <list [4]>
3 3 <list [3]>
a <- c(1,2,3)
b <- c("a","b")
c <- c(1L,3L,5L,4L)
d <- c(TRUE,FALSE,TRUE)
e <- list(b,c,d);e
DF <- data.frame(a,I(e));DF