在R中引用列以将TIBLE除以
我试图将TIBLE中的所有数字列除以TIBLE中的一列。我可以通过显式地编写列的名称来实现这一点,但是我正在尝试将它构造为一个函数,这样我就可以将它应用到一个tibble列表中。我试图用下面的例子尽可能清楚地解释 如果这是我的藏书之一:在R中引用列以将TIBLE除以,r,dplyr,R,Dplyr,我试图将TIBLE中的所有数字列除以TIBLE中的一列。我可以通过显式地编写列的名称来实现这一点,但是我正在尝试将它构造为一个函数,这样我就可以将它应用到一个tibble列表中。我试图用下面的例子尽可能清楚地解释 如果这是我的藏书之一: > data <- tibble( ID = sample(letters, 3), x = 1:3, y = 9:11, z = y^2-x) > data #
> data <- tibble(
ID = sample(letters, 3),
x = 1:3,
y = 9:11,
z = y^2-x)
> data
# A tibble: 3 x 4
ID x y z
<chr> <int> <int> <dbl>
1 r 1 9 80
2 k 2 10 98
3 f 3 11 118
但我得到了以下错误:
Error in ./last.col : non-numeric argument to binary operator
我理解这是因为“last.col”属于字符类,但我不确定如何修复它或继续前进
如果有任何建议,我将不胜感激
:)您可以在此处使用非标准求值,方法是将列n转换为符号,然后求值
library(dplyr)
library(rlang)
data %>% mutate(across(where(is.numeric), ~ . /!!sym(last.col)))
# A tibble: 3 x 4
# ID x y z
# <chr> <dbl> <dbl> <dbl>
#1 c 0.0125 0.112 1
#2 l 0.0204 0.102 1
#3 s 0.0254 0.0932 1
您可以在此处使用非标准求值,方法是将列n转换为符号,然后求值
library(dplyr)
library(rlang)
data %>% mutate(across(where(is.numeric), ~ . /!!sym(last.col)))
# A tibble: 3 x 4
# ID x y z
# <chr> <dbl> <dbl> <dbl>
#1 c 0.0125 0.112 1
#2 l 0.0204 0.102 1
#3 s 0.0254 0.0932 1
我们可以使用
lappy
frombase R
i1 <- sapply(data, is.numeric)
data[i1] <- lapply(data[i1], function(x) x/data[[last.col]])
i1我们可以使用lappy
frombase R
i1 <- sapply(data, is.numeric)
data[i1] <- lapply(data[i1], function(x) x/data[[last.col]])
i1
i1 <- sapply(data, is.numeric)
data[i1] <- lapply(data[i1], function(x) x/data[[last.col]])