我想創建一個回圈,在一個字串的串列上運行。這個字串串列包含需要插入語法的變數的名稱。我的語法有時需要帶引號的變數(然后就成功了),有時不帶引號(然后就失敗了)。我已經嘗試了這里的解決方案從R中的字符向量中移除引號,但是沒有成功。
這里是一個例子。
這里是我嘗試做的一個例子:
library(dplyr)
data(mtcars)
list=c("mpg"。 "cyl")
for (i in list) {
print(i)
df=mtcars[,c(i。 "齒輪")] #this works
df1 = group_by(df, gear) %>。 % summarize(Y=sum(i)) # this doesn't work - it doesn't recognize i as variable name[/span
}
我很感謝你的幫助
謝謝你。 Polinauj5u.com熱心網友回復:
嘗試將i包裹在get中。
for (i in list) {
print(i)
df=mtcars[,c(i。 "齒輪")] #this works
df1 = group_by(df, gear) %>。 % summarize(Y=sum(get(i))) # this doesn't work - it doesn't recognize i as variable name[/span
}
關于sym和!等也值得一讀
uj5u.com熱心網友回復:
為了糾正訪問字符變數給定的錯誤,使用!!rlang::sym(i)。
for (i in list) {
print(i)
df=mtcars[,c(i。 "齒輪")] #this works
df1 = group_by(df, gear) %>。 % summarize(Y = sum(! ! rlang::sym(i)))
}。
但是問題的代碼中還有一個錯誤,輸出df1每次通過回圈都被重寫。
下面是一個更正的回圈。
df_list < - lapply(list。 function(i){
print(i)
df < - mtcars[,c(i, "gear")] #this works[/span
group_by(df, gear) %> % summarize(Y = sum(! ! rlang::sym(i)))
})
df_list[[1]]/span>
## A tibble: 3 x 2
#齒輪Y
# <dbl> <dbl>/span>
#1 3 242.
#2 4 294.
#3 5 107.
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/327332.html
標籤:
