将粘贴应用于矢量列表以获取字符串列表

时间:2015-04-18 22:14:22

标签: r

这看起来很简单,但无论我使用哪种*应用功能,正确的答案都会让我失望。我没有尝试任何其他包,因为它似乎* apply应该绝对能够做到这一点。

我的数据:

data = list(foo=c("first", "m", "last"), bar=c("first", "m", "last"))

我认为应该有效:

lapply(data, FUN=paste)

但它给了我:

$foo
[1] "first" "m"     "last" 

$bar
[1] "first" "m"     "last" 

我想:

$foo
[1] "first m last"
$bar
[1] "first m last"

当然,我已经尝试了很多其他的东西:

> paste(data)
[1] "c(\"first\", \"m\", \"last\")" "c(\"first\", \"m\", \"last\")"
> paste(data, collapse = "")
[1] "c(\"first\", \"m\", \"last\")c(\"first\", \"m\", \"last\")"
> paste(data, sep = "")
[1] "c(\"first\", \"m\", \"last\")" "c(\"first\", \"m\", \"last\")"
> paste(data, collapse = "", sep="")
[1] "c(\"first\", \"m\", \"last\")c(\"first\", \"m\", \"last\")"
> paste(as.vector(data), collapse = "", sep="")
[1] "c(\"first\", \"m\", \"last\")c(\"first\", \"m\", \"last\")"
> paste(c(data), collapse = "", sep="")
[1] "c(\"first\", \"m\", \"last\")c(\"first\", \"m\", \"last\")"
> paste(c(data, recursive = T), collapse = "", sep="")
[1] "firstmlastfirstmlast"

我不明白引用“c”废话的来源。

1 个答案:

答案 0 :(得分:8)

您的初始方法几乎是正确的,您只需要添加collapse = " "以便将向量连接到列表的每个元素中的一个字符串

lapply(data, paste, collapse = " ") 
# $foo
# [1] "first m last"
# 
# $bar
# [1] "first m last"