为什么我不能只提取带有循环 for in r 的列字段的第一个单词?
Why can't I extract only the first word of the fields of a column with loop for in r?
谁能帮我完成这个简单的任务。
我刚开始使用 r,我不明白为什么这部分代码不在 运行 循环中。
我尝试在循环外使用函数 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'], ' ')
}
我建议学习更多关于 tidyverse 的知识,因为它提供了一个很好的框架来学习和应用 R 工具,而不必处理基础 R 的特性。以下代码使用 dplyr
和stringr
用于字符串操作:
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 默认情况下会进行矢量化。也就是说,您应用于向量的任何函数将默认应用于该向量的每个元素。
使用基础 R,借鉴 :
df_sort$model1 <- sapply(strsplit(df_sort$uni_model, "\s"), `[`, 1)
谁能帮我完成这个简单的任务。
我刚开始使用 r,我不明白为什么这部分代码不在 运行 循环中。
我尝试在循环外使用函数 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'], ' ')
}
我建议学习更多关于 tidyverse 的知识,因为它提供了一个很好的框架来学习和应用 R 工具,而不必处理基础 R 的特性。以下代码使用 dplyr
和stringr
用于字符串操作:
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 默认情况下会进行矢量化。也就是说,您应用于向量的任何函数将默认应用于该向量的每个元素。
使用基础 R,借鉴
df_sort$model1 <- sapply(strsplit(df_sort$uni_model, "\s"), `[`, 1)