【发布时间】:2016-03-05 21:55:53
【问题描述】:
我编写了以下函数来将全名更改为首字母后跟姓氏:
names1 <- function(x) {
z <- unlist(strsplit(x, " "))[1]
z <- substr(z,1,1)
y <- unlist(strsplit(x, " "))[2]
paste(z,"."," ", y, sep="")
}
所以
name <- "John Doe"
names1(name)
成功返回
"J. Doe"
但是,当我尝试将其应用于名称向量时,它只返回第一个对象(格式正确)。
为什么它不会在向量中的所有对象上执行该功能?我确实发现使用sapply 可以正常工作,但是我可以在没有sapply 的向量上运行其他类型的函数,并将完整的向量作为输出返回。
【问题讨论】:
-
您使用
[1]和[2]硬编码了unlist(strsplit(...))的第一个和第二个元素。您必须更改函数以获取每个名字和每个姓氏,或者您可以将其保持为非矢量化并使用 Frank 回答中的建议。