使用 R 在句子中重新定位包含在 [ ] 中的单词
Reposition the words enclosed in [ ] in a sentence using R
[VN] [Ren'Py] Game1 [Author1]
[VN] [Ren'Py] Game2 [Author2]
[VN] [Ren'Py] Game3 [Author3]
我将这 3 行保存在一个文本文件中。我想重新排列它们,使我的 output 看起来像:
Game1 [Author1] [VN] [Ren'Py]
Game2 [Author2] [VN] [Ren'Py]
Game3 [Author3] [VN] [Ren'Py]
当我第一次将文本文件读入 RStudio 时,它创建了一个包含 1 个变量的数据框,所有游戏名称的 class 都是字符。
a = read.csv("games.txt")
然后我使用 grepl 提取所有包含 [ ]
的名称
b = a$name[grepl("\[.*", a$name)]
我又遇到了一个问题。我实际上只想 grepl 那些以 [
开头的名字
b = a$name[grepl("^\[.*", a$name)]
但是使用插入符号不起作用。这样做给了我一个 0 列和 3 行的数据框
现在,b是一个长度为3的字符,运行ning
b[1]
b[2]
b[3]
分别给我每个游戏的全名
然后我运行 strsplit 用空格分隔游戏的单词
c = strsplit(b, " +")
现在 c 属于 class 长度为 3
的“列表”
然后我尝试运行这个代码
seq = 1 : length(c)
y = NULL
for (i in seq){
tmp <- c[[i]][1]
y[i] = tmp
c[[i]][-1]
}
理想情况下,这应该从 c[[1]] 中提取 [VN],将其存储在 y[1] 中,然后从 c[[1]].
中删除 [VN]
但是,y 每次都会被重写,当循环完成时,只有 c[[3]][1] 存储在 y 中。
我现在被困在这里,对如何继续获取输出一无所知。请指教
这是您要找的吗?
数据:
x <- c("[VN] [Ren'Py] Game1 [Author1]")
解决方案:
sub("(\[[^[]+) (\[[^[]+) (\w+) (\[[^[]+)", "\3 \1 \2 \4", x)
结果:
[1] "Game1 [VN] [Ren'Py] [Author1]"
[VN] [Ren'Py] Game1 [Author1]
[VN] [Ren'Py] Game2 [Author2]
[VN] [Ren'Py] Game3 [Author3]
我将这 3 行保存在一个文本文件中。我想重新排列它们,使我的 output 看起来像:
Game1 [Author1] [VN] [Ren'Py]
Game2 [Author2] [VN] [Ren'Py]
Game3 [Author3] [VN] [Ren'Py]
当我第一次将文本文件读入 RStudio 时,它创建了一个包含 1 个变量的数据框,所有游戏名称的 class 都是字符。
a = read.csv("games.txt")
然后我使用 grepl 提取所有包含 [ ]
的名称b = a$name[grepl("\[.*", a$name)]
我又遇到了一个问题。我实际上只想 grepl 那些以 [
开头的名字b = a$name[grepl("^\[.*", a$name)]
但是使用插入符号不起作用。这样做给了我一个 0 列和 3 行的数据框
现在,b是一个长度为3的字符,运行ning
b[1]
b[2]
b[3]
分别给我每个游戏的全名
然后我运行 strsplit 用空格分隔游戏的单词
c = strsplit(b, " +")
现在 c 属于 class 长度为 3
的“列表”然后我尝试运行这个代码
seq = 1 : length(c)
y = NULL
for (i in seq){
tmp <- c[[i]][1]
y[i] = tmp
c[[i]][-1]
}
理想情况下,这应该从 c[[1]] 中提取 [VN],将其存储在 y[1] 中,然后从 c[[1]].
中删除 [VN]但是,y 每次都会被重写,当循环完成时,只有 c[[3]][1] 存储在 y 中。
我现在被困在这里,对如何继续获取输出一无所知。请指教
这是您要找的吗?
数据:
x <- c("[VN] [Ren'Py] Game1 [Author1]")
解决方案:
sub("(\[[^[]+) (\[[^[]+) (\w+) (\[[^[]+)", "\3 \1 \2 \4", x)
结果:
[1] "Game1 [VN] [Ren'Py] [Author1]"