如何将原始输入转换为 R 中的索引值
How to convert raw input into index value in R
首先感谢您的帮助。
我有一个原始输入文件“foo.txt
”和另一个 dictionary
文件“dic.csv
”,其中 dic 文件中的每一行都是一对 key-value
,键是一个字符值是另一个字符。
可能是这样,foo.txt:
abcd
dcba
aaaa
和dic.csv:
a 1
b 2
c 3
d 4
我想根据它们匹配的键将 "foo.txt" 转换为 dic 文件中的值,这样的结果是:
1234
4321
1111
有什么有效的方法吗?
谢谢!
尝试
chartr(paste(d1$Col1, collapse=''), paste(d1$Col2, collapse=""), v1)
#[1] "1234" "4321" "1111"
或者不使用两个 paste
,我们可以使用 sapply
循环
v2 <- sapply(d1, paste, collapse='')
chartr(v2[1], v2[2], v1)
#[1] "1234" "4321" "1111"
或使用 qdap
中的 mgsub
library(qdap)
mgsub(d1$Col1, d1$Col2, v1)
#[1] "1234" "4321" "1111"
或者
library(gsubfn)
gsubfn('[abcd]', list(a=1, b=2, c=3, d=4), v1)
#[1] "1234" "4321" "1111"
数据
v1 <- c('abcd', 'dcba', 'aaaa')
d1 <- data.frame(Col1= letters[1:4], Col2=1:4, stringsAsFactors=FALSE)
您可以将字典 data.frame
转换为命名向量,然后使用索引:
foo <- c("abcd", "dcba", "aaaa")
dict <- data.frame(key = letters[1:4], value = 1:4)
dict.vec <- setNames(dict$value, dict$key)
sapply(foo, function(x)
paste(dict.vec[strsplit(x, "")[[1]]], collapse = ""))
# abcd dcba aaaa
# "1234" "4321" "1111"
首先感谢您的帮助。
我有一个原始输入文件“foo.txt
”和另一个 dictionary
文件“dic.csv
”,其中 dic 文件中的每一行都是一对 key-value
,键是一个字符值是另一个字符。
可能是这样,foo.txt:
abcd
dcba
aaaa
和dic.csv:
a 1
b 2
c 3
d 4
我想根据它们匹配的键将 "foo.txt" 转换为 dic 文件中的值,这样的结果是:
1234
4321
1111
有什么有效的方法吗?
谢谢!
尝试
chartr(paste(d1$Col1, collapse=''), paste(d1$Col2, collapse=""), v1)
#[1] "1234" "4321" "1111"
或者不使用两个 paste
,我们可以使用 sapply
v2 <- sapply(d1, paste, collapse='')
chartr(v2[1], v2[2], v1)
#[1] "1234" "4321" "1111"
或使用 qdap
mgsub
library(qdap)
mgsub(d1$Col1, d1$Col2, v1)
#[1] "1234" "4321" "1111"
或者
library(gsubfn)
gsubfn('[abcd]', list(a=1, b=2, c=3, d=4), v1)
#[1] "1234" "4321" "1111"
数据
v1 <- c('abcd', 'dcba', 'aaaa')
d1 <- data.frame(Col1= letters[1:4], Col2=1:4, stringsAsFactors=FALSE)
您可以将字典 data.frame
转换为命名向量,然后使用索引:
foo <- c("abcd", "dcba", "aaaa")
dict <- data.frame(key = letters[1:4], value = 1:4)
dict.vec <- setNames(dict$value, dict$key)
sapply(foo, function(x)
paste(dict.vec[strsplit(x, "")[[1]]], collapse = ""))
# abcd dcba aaaa
# "1234" "4321" "1111"