【问题标题】:Storing array of words from string in a list of full names in R将字符串中的单词数组存储在R中的全名列表中
【发布时间】:2014-10-08 07:44:49
【问题描述】:

我有一个包含人名的120777 记录列表。我想为数据集中的每条记录存储一组名称部分。我在 R 中试过这个。

my_list$name_parts<- strsplit(my_list$name, " ")

我得到一个my_list$name_parts 作为120777 项目的列表。当我尝试使用length(my_list$name_parts) 查询每个名称中的单词数时,我得到了120777

【问题讨论】:

  • my_list$name_parts 是一个list,列表的长度是它包含的元素数。你想要每个元素的长度,可以通过sapply(my_list$name_parts,length)获取
  • 另一个选项是使用 plyr 库并运行 llply(my_list$name_parts,length)。或者 ldply() 如果您希望输出位于数据框中。

标签: r substring


【解决方案1】:

让我们用这个简单的例子:

my_list <- list()
my_list$name <- c("toto t. tutu", "foo bar")

要获取字数,可以这样做:

lapply(strsplit(my_list$name," "), length)

在上面的简单示例中给出:

[[1]]
[1] 3

[[2]]
[1] 2

为了避免得到一个列表,你甚至可以这样做:

unlist(lapply(strsplit(my_list$name," "), length))
[1] 3 2

【讨论】:

  • “a”不应该是“my_list$name”吗?
  • 此解决方案有效!但也请告诉我——如果我要将 word_parts 数组(不是数组的长度)作为变量存储在我的数据集 my_list 中,我该怎么做?
  • word_parts 是什么?
  • 我们刚刚为每个名称计算其长度的数组(在 strsplit 上实现)。例如。如果列表的第一条记录中的名称是“John Cambell”,则 word_parts 将是 ["John", "Cambell"]
  • 如果要存储数组列表:my_list$word_parts &lt;- lapply(strsplit(my_list$name," "), length)。如果要存储数组中所有名称的所有单词:my_list$word_parts &lt;- unlist(lapply(strsplit(my_list$name," "), length))
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-09-24
  • 1970-01-01
  • 2015-10-14
  • 2021-10-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多