假設我有向量 x_1、x_2、x_3 和一個帶有它們名稱的向量:
x_1<-1:3
x_2<-3:5
x_3<-7:9
names<-c("x_1", "x_2", "x_3")
是否可以使用帶有其名稱的另一個向量來處理這些向量?例如:
for (i in 1:length(names)) {
print(paste0("x_",i)/2)
}
該示例不起作用,但這就是我想做的。是否有像“as.name”這樣的函式或任何將 paste0 輸出轉換為變數名的函式?謝謝!
uj5u.com熱心網友回復:
我們可以在 with 中獲取所有物件的值(names最好使用不同的名稱作為names函式base R名稱),除以 2 并賦值(回傳到)listmget%=%names
library(collapse)
names %=% lapply(mget(names), `/`, 2)
-輸出
> x_1
[1] 0.5 1.0 1.5
> x_2
[1] 1.5 2.0 2.5
> x_3
[1] 3.5 4.0 4.5
在base R for回圈中,我們可以使用assign
for (i in seq_along(names)) {
assign(paste0("x_",i), get(paste0("x_", i))/2)
}
-檢查
> x_1
[1] 0.5 1.0 1.5
> x_2
[1] 1.5 2.0 2.5
> x_3
[1] 3.5 4.0 4.5
uj5u.com熱心網友回復:
您可以嘗試命名串列嗎?
tibble::lst(x_1, x_2, x_3)[[names[1]]]
然后你可以回圈
for(i in names){
print(tibble::lst(x_1, x_2, x_3)[[i]])
}
uj5u.com熱心網友回復:
我認為您正在尋找以下eval(parse(text=...))組合:
for (i in 1:length(names)) {
print(eval(parse(text=paste0("x_", i)))/2)
}
給
[1] 0.5 1.0 1.5
[1] 1.5 2.0 2.5
[1] 3.5 4.0 4.5
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/442245.html
上一篇:如何在R中組合兩組資料并在決議后將它們分別添加到單個列中?
下一篇:檢查變數并用JS發送到主頁
