r - 如何在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
解决方案
你假设
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
的列按元素进行。指定我们要按行而不是按列应用总和。df
vect
MARGIN = 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)
推荐阅读
- regex - 正则表达式删除两个特定单词之间的所有单词
- reactjs - 类组件到功能组件
- html - 我应该如何将此文本放置在我的图像上?
- super - 如何在 Chef 资源中测试“超级”?
- node.js - 获取有效的 url 在 node express 中给出 404 错误
- wordpress - 当 G-Suite 表单嵌入到外部网站时,是否有任何表单数据存储在主机站点上?
- kotlin - 将参数存储库传递给 ViewModel 而不是从 AndroidViewModel 继承是个好主意吗?
- node.js - 如何在 AWS 上部署的 Web 应用程序中实现通知服务?
- python - Selenium:无法将抓取的元素放入 csv
- scala - 如何在 sql.functions.struct 中进行列表扩展?