为什么我不能只提取r中带有循环的列的字段的第一个单词?

问题描述 投票:0回答:1

谁能帮我完成这个简单的任务。我正在r入门,我不明白为什么这部分代码没有在for循环内运行。我尝试过在循环外使用函数strsplit(),但效果很好,但是在数据帧中的for循环中,我没有以我想要的方式成功运行代码。

这里是代码:

mpg <- ggplot2::mpg
df_sort <- data.frame(uni_model = sort(unique(mpg$model)))
df_sort$model1 <- ''
for (x in seq_along(df_sort$model)){
    df_sort[x, 'model1'] <- strsplit(df_sort[x, 'model'], ' ')    
}
r string dataframe strsplit
1个回答
0
投票

[我建议您学习更多关于tidyverse的知识,因为它提供了学习和应用R工具的很好的框架,而不必处理基础R的特质。下面的代码使用dplyrstringr来完成字符串的工作操作:

library(dplyr)
library(stringr)

mutate(df_sort, model1 = word(uni_model, 1))

                uni_model      model1
1             4runner 4wd     4runner
2                      a4          a4
3              a4 quattro          a4
4              a6 quattro          a6
5                  altima      altima

etc...

请注意,您不需要使用for循环,因为R默认是矢量化的。也就是说,默认情况下,应用于矢量的任何函数都将应用于该矢量的每个元素。

© www.soinside.com 2019 - 2024. All rights reserved.