[英]How to map column names inside another (p)map function
我想在每個值更改mydf2
在其最接近的價值attitude
的相應列。 例如,我們將mydf2
的complaints
列中的第一個值mydf2
替換為64,因為64是attitude
的complaints
列中最接近的數字。 這應該很容易,除了我希望代碼能概括為許多列名。 盡管在下面的示例中只有三列需要關注,但是我希望代碼也可以在矢量cols_to_iterate
的末尾添加“ raises”或“ critical”來使用。
library(tidyverse)
library(DescTools)
set.seed(123)
cols_to_iterate <- c("complaints", "learning", "advance")
mydf2 <- as.data.frame(map(attitude[cols_to_iterate], ~runif(6, 50, 100)))
map(cols_to_iterate, function(col_of_interest){
pmap(mydf2, function(cols_to_iterate, ...){
new_mydf2_col_val <- Closest(pull(attitude, col_of_interest), col_of_interest)
return(new_mydf2_col_val)
})
}
)
# Error in x - a : non-numeric argument to binary operator
我嘗試了上面的代碼,但pmap匿名函數無法像手動輸入函數一樣識別cols_to_iterate
作為輸入(c(“投訴,”學習“,”高級“))。
謝謝!
您不應在此處使用pmap
,因為pmap
用於遍歷行。 您應該改用map
。
library(tidyverse)
library(DescTools)
set.seed(123)
cols_to_iterate <- c("complaints", "learning", "advance")
mydf2 <- as.data.frame(map(attitude[cols_to_iterate], ~runif(6, 50, 100)))
map2_df(mydf2,colnames(mydf2),function(column,colname){
map_dbl(column,function(cell){
Closest(attitude[[colname]],cell)[1] # use the first value in case there are two closest values
})
})
# A tibble: 6 x 3
complaints learning advance
<dbl> <dbl> <dbl>
1 64 75 72
2 90 75 72
3 70 75 55
4 90 72 72
5 90 75 63
6 53 72 52
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.