【发布时间】:2017-03-25 22:35:07
【问题描述】:
数据集包含有关超级英雄的信息。此代码从字符串 'name' 中删除烦人的括号部分:
# package loading
library(fivethirtyeight)
# data opening
data(package ="fivethirtyeight")
data(comic_characters)
for (i in 1:length(comic_characters$name))
{
bracket[i] <- which(strsplit(comic_characters$name[i], "")[[1]] == "(")
comic_characters$name[i] <- substr(comic_characters$name[i], start = 1, stop = bracket[i]-2)
}
如何使用应用函数(没有 for 循环)做同样的事情?以下是我的尝试:
bracket = sapply(sapply(strsplit(comic_characters$name, ''), function(x)
which(x == '(')), `[`, 1)
# here comes the problem:
comic_characters$name <- lapply(x, function(x)
substr(comic_characters$name, start=1, stop=bracket[i]-2))
我该怎么做?提前谢谢!
【问题讨论】:
-
感谢您的帮助。你能告诉我如何使用 apply 函数解决这个问题吗?