将字符串列表的列表转换为 R 中数字的数据框
Converting a list of lists of strings to a data frame of numbers in R
我有一个字符串列表列表如下:
> ll
[[1]]
[1] "2" "1"
[[2]]
character(0)
[[3]]
[1] "1"
[[4]]
[1] "1" "8"
最长列表的长度为 2,我想构建一个包含此列表中 2 列的数据框。还将列表中的每个项目转换为数字或字符(0)的 NA 的奖励积分。我尝试使用 mapply() 和 data.frame 转换为数据框并按如下方式填充 NA。
# Find length of each list element
len = sapply(awards2, length)
# Number of NAs to fill for column shorter than longest
len = 2 - len
df = data.frame(mapply( function(x,y) c( x , rep( NA , y ) ) , ll , len))
但是,我没有使用上面的代码得到一个包含 2 列(和 NA 作为填充符)的数据框。
感谢您的帮助。
我们可以使用 stringi
中的 stri_list2matrix
。因为list
个元素都是character
个向量,所以用这个函数好像没问题
library(stringi)
t(stri_list2matrix(ll))
# [,1] [,2]
#[1,] "2" "1"
#[2,] NA NA
#[3,] "1" NA
#[4,] "1" "8"
如果我们需要转换成data.frame
,用as.data.frame
包裹起来
我有一个字符串列表列表如下:
> ll
[[1]]
[1] "2" "1"
[[2]]
character(0)
[[3]]
[1] "1"
[[4]]
[1] "1" "8"
最长列表的长度为 2,我想构建一个包含此列表中 2 列的数据框。还将列表中的每个项目转换为数字或字符(0)的 NA 的奖励积分。我尝试使用 mapply() 和 data.frame 转换为数据框并按如下方式填充 NA。
# Find length of each list element
len = sapply(awards2, length)
# Number of NAs to fill for column shorter than longest
len = 2 - len
df = data.frame(mapply( function(x,y) c( x , rep( NA , y ) ) , ll , len))
但是,我没有使用上面的代码得到一个包含 2 列(和 NA 作为填充符)的数据框。
感谢您的帮助。
我们可以使用 stringi
中的 stri_list2matrix
。因为list
个元素都是character
个向量,所以用这个函数好像没问题
library(stringi)
t(stri_list2matrix(ll))
# [,1] [,2]
#[1,] "2" "1"
#[2,] NA NA
#[3,] "1" NA
#[4,] "1" "8"
如果我们需要转换成data.frame
,用as.data.frame