首页 > 解决方案 > 如何在R中的变量求和中使用字符?

问题描述

我有一些数据框。这是一个小例子:

a <- rnorm(100, 5, 2)
b <- rnorm(100, 10, 3)
c <- rnorm(100, 15, 4)
df <- data.frame(a, b, c)

我有一个字符变量vect <- "c('a','b')"

当我尝试使用命令计算变量的总和时

df$d <- df[vect]

必须等价于

df$d <- df[c('a','b')]

但是,作为一个结果,我有一个错误

[.data.frame(df, vect) :undefined columns selected

标签: r

解决方案


你假设

vect <- "c('a','b')"
df$d <- df[vect]

相当于

df$d <- df[c('a','b')]

是不正确的。

正如@Karthik 指出的那样,您应该删除作业中的引号vect

但是,从您的问题来看,您似乎想对中指定的元素求和vect,然后分配给d. 为此,您需要稍微更改您的代码

vect <- c('a','b')
df$d <- apply(X = df[vect], MARGIN = 1, FUN = sum)

这对由 指定sum的列按元素进行。指定我们要按行而不是按列应用总和。dfvectMARGIN = 1

编辑: 正如@ThomasIsCoding 在下面指出的那样,如果由于某种原因vect必须是字符串,您可以使用将字符串解析为 R 表达式str2lang

vect <- "c('a','b')"
parsed_vect <-  eval(str2lang(vect))
df$d <- apply(X = df[parsed_vect], MARGIN = 1, FUN = sum)

推荐阅读