我有兩個data frames。其中一個包含大量問題作為文本,我使用該grep()函式將這些數字與我的其他dataframe列的名稱相匹配。
問題是我的一部分code不起作用,因為我function grep()沒有做到這一點。
基本上我的兩個dataframes如下
DF1:
| 問題 | 團體 |
|---|---|
| 11 | 紅肉 |
| 100 | 雞 |
| 56 | 蔬菜 |
| 210 | 乳制品 |
DF 2(值無關緊要,只有列名):
| 1.問題 | 2.問題 | ... | 101.問題 | ... | 250.問題 |
|---|---|---|---|---|---|
| 是的 | 不 | ... | ... | ... | ... |
| 是的 | 是的 | ... | ... | ... | ... |
| 不 | 是的 | ... | ... | ... | ... |
| 不 | 是的 | ... | ... | ... | ... |
我使用以下代碼:
i <- n ## I change n according to the row of DF1 that I want
grep(DF1$Question[i], colnames(DF2), fixed = T)
如果我做:
i <- 2 ## (Question number 100)
grep(DF1$Question[i], colnames(DF2), fixed = T)
我的代碼回傳 100,這是正確的,因為它是對應于“100.Question”的列
但如果我這樣做:
i <- 1 ## (Question number 1)
grep(DF1$Question[i], colnames(DF2), fixed = T)
我的代碼回傳 1, 11, 21 ... 101 ... 201
如果我這樣做也一樣:
i <- 3 ## (Question number 56)
grep(DF1$Question[i], colnames(DF2), fixed = T)
它回傳 56, 156
我只想要完全相同的數字。即使我使用引數fixed = TRUE它也不起作用。
有解決方案或替代方案嗎?
uj5u.com熱心網友回復:
兩個選項:1).在 grep 模式中包含grep(paste0("^", DF1$Question[i], "\\."), colnames(DF2)),或 2)粘貼完整".Question"內容并使用完全匹配,完全不使用任何 grep:paste0(DF1$Question, ".Question"). 這可能比正則運算式更有效。由于您的代碼到處都有這些is,因此我假設您正在使用回圈。grep 和 paste 是矢量化的,因此如果您提供更多背景關系,我們可能能夠幫助您完全避免回圈。
uj5u.com熱心網友回復:
如何pattern從一開始就指定你想要的,^然后你希望它跟隨.Q?
i=3
grep(paste0("^",DF1$Question[i],".Q"), colnames(DF2))
輸出:
[1] 56
uj5u.com熱心網友回復:
您需要grep唯一的值,因此您應該grep以 string 的開頭^,以及您的 number 和 dot .。在這種情況下,您不能使用該fixed = T引數,因為您正在使用正則運算式進行匹配。
grep(paste0("^", DF1$Question[i], "\\."), colnames(DF2))
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/478534.html
上一篇:如何使用imputeTS包中的gplot_na_imputations()或ggplot_na_distribution()
