當我嘗試使用函式的輸入在函式中添加一列時,會添加一個名稱錯誤的列。以下是資料示例:
AllGlut1 <- data.frame(Date = c("11/1/2021", "11/2/2021", "11/3/2021"), Row = c(3, 6, 8), d.15N.14N = c(-4.593, -4.427, -4.436))
known <- "d15N_known"
RefMaterials <- data.frame(d15N_known = c(6.485, 2.632, 9.235), d13C_known = c(-21.523, -23.344, -24.892))
colm <- "d.15N.14N"
driftcorr <- function(colm, known, df){
AllGlut1 <- AllGlut1 %>% mutate(res_drift = RefMaterials[1,known] - AllGlut1[colm])
return(AllGlut1)
}
results <- driftcorr(colm, known, AllGlut1)
當我這樣做時:
res_drift <- RefMaterials[1,known] - AllGlut1[colm]
在控制臺中,它作業得很好。
有人知道這里發生了什么嗎?
uj5u.com熱心網友回復:
使用[, colm]而不是[colm]參考列AllGlut1:
driftcorr <- function(colm, known, df){
AllGlut1 <- AllGlut1 %>%
mutate(res_drift = RefMaterials[1,known] - AllGlut1[, colm])
return(AllGlut1)
}
或者,正如@Martin Gal 所說,使用RefMaterials[1,known] - !!sym(colm)(我檢查過,它確實有效......)
AllGlut1[colm]回傳一列資料框AllGlut1[, colm]如果回傳一個向量AllGlut1是一個資料幀,或者如果一列tibbleAllGlut1是tibbleAllGlut1[[colm]]總是回傳一個向量(就像pull(AllGlut1, colm)or 一樣AllGlut1[,colm, drop=TRUE])
看起來您正在混合使用 base-R 和 tidyverse 方法,這可能會讓人感到困惑......
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/346139.html
