如何将字符串附加到 for 循环中的向量?
How to append strings to a vector from a for loop?
我得到一个数据框,其中有一列名称以逗号分隔,我想创建一个向量,其中独立包含每个名称,但我的解决方案不起作用。需要帮助。
library(tidyverse)
cast <- netflix_titles$cast
names <- c()
for(i in cast){
splitted <- strsplit(i, ",")
for(act in splitted){
append(names, act)
}
}
行采用这种格式
"Jesse Eisenberg, Woody Harrelson, Emma Stone, Abigail Breslin, Amber Heard, Bill Murray, Derek Graf"
您可以使用 unlist(strsplit())
获得名称向量。 strsplit
本身 returns 一个列表,您可以使用 unlist
.
将其转换为原子向量
unlist(strsplit("Jesse Eisenberg, Woody Harrelson, Emma Stone, Abigail Breslin, Amber Heard, Bill Murray, Derek Graf", ", "))
#> [1] "Jesse Eisenberg" "Woody Harrelson" "Emma Stone" "Abigail Breslin"
#> [5] "Amber Heard" "Bill Murray" "Derek Graf"
因此,如果添加 unlist()
.
,则可以完全删除 for
循环
您甚至可以对数据框中的整列执行此操作:
df <- data.frame(cast = c(
"Jesse Eisenberg, Woody Harrelson, Emma Stone, Abigail Breslin, Amber Heard, Bill Murray, Derek Graf",
"Bruce Willis, Matt Damon, Brad Pitt"
))
unlist(strsplit(df$cast, ", "))
#> [1] "Jesse Eisenberg" "Woody Harrelson" "Emma Stone" "Abigail Breslin"
#> [5] "Amber Heard" "Bill Murray" "Derek Graf" "Bruce Willis"
#> [9] "Matt Damon" "Brad Pitt"
我得到一个数据框,其中有一列名称以逗号分隔,我想创建一个向量,其中独立包含每个名称,但我的解决方案不起作用。需要帮助。
library(tidyverse)
cast <- netflix_titles$cast
names <- c()
for(i in cast){
splitted <- strsplit(i, ",")
for(act in splitted){
append(names, act)
}
}
行采用这种格式
"Jesse Eisenberg, Woody Harrelson, Emma Stone, Abigail Breslin, Amber Heard, Bill Murray, Derek Graf"
您可以使用 unlist(strsplit())
获得名称向量。 strsplit
本身 returns 一个列表,您可以使用 unlist
.
unlist(strsplit("Jesse Eisenberg, Woody Harrelson, Emma Stone, Abigail Breslin, Amber Heard, Bill Murray, Derek Graf", ", "))
#> [1] "Jesse Eisenberg" "Woody Harrelson" "Emma Stone" "Abigail Breslin"
#> [5] "Amber Heard" "Bill Murray" "Derek Graf"
因此,如果添加 unlist()
.
for
循环
您甚至可以对数据框中的整列执行此操作:
df <- data.frame(cast = c(
"Jesse Eisenberg, Woody Harrelson, Emma Stone, Abigail Breslin, Amber Heard, Bill Murray, Derek Graf",
"Bruce Willis, Matt Damon, Brad Pitt"
))
unlist(strsplit(df$cast, ", "))
#> [1] "Jesse Eisenberg" "Woody Harrelson" "Emma Stone" "Abigail Breslin"
#> [5] "Amber Heard" "Bill Murray" "Derek Graf" "Bruce Willis"
#> [9] "Matt Damon" "Brad Pitt"