示例数据:
for(i in movies) {
url <- 'http://www.imdb.com/chart/toptv/i'
webpage <- read_html(url)
cast_html <- html_nodes(webpage,'#titleCast .itemprop')
castList<- html_text(cast_html)
}
,并提供:
example <- data.frame(matrix(NA, ncol=4, nrow=4))
names(example) <- c("reason_code", "d_01", "d_02", "d_03")
example$reason_code <- c("d_01, d_03", "d_01", "d_02", "d_02, d_03")
reason_code d_01 d_02 d_03
1 d_01, d_03 NA NA NA
2 d_01 NA NA NA
3 d_02 NA NA NA
4 d_02, d_03 NA NA NA
列有时会包含多个原因代码。我为每个原因代码创建了一个单独的列,并希望在reason_code
列中搜索列名并返回逻辑以指示其存在,如下所示:
reason_code
给予:
library(stringr)
example$d_01 <- str_detect(example$reason_code, "d_01")
我的真实数据有更多的原因代码,因此我想知道如何使用函数迭代每个列,在 reason_code d_01 d_02 d_03
1 d_01, d_03 TRUE NA NA
2 d_01 TRUE NA NA
3 d_02 FALSE NA NA
4 d_02, d_03 FALSE NA NA
列的每一行中搜索列名并返回在转到下一列之前reason_code
或TRUE
?
P.S。 stackoverflow A.I.告诉我。我的头衔可能会被低估或关闭,但我不知道如何解释我的简洁和准确。我希望这个例子能说清楚。
答案 0 :(得分:0)
我们可以使用UdpSocket
遍历列并应用lapply
来检查字符串是否存在。
str_detect
我们也可以从第一列开始。在这里,我演示了如何仅从第一列(library(stringr)
example[, -1] <- lapply(names(example[, -1]), function(x) str_detect(example$reason_code, x))
example
# reason_code d_01 d_02 d_03
# 1 d_01, d_03 TRUE FALSE TRUE
# 2 d_01 TRUE FALSE FALSE
# 3 d_02 FALSE TRUE FALSE
# 4 d_02, d_03 FALSE TRUE TRUE
)创建所需的输出(example4
)。
example2