假设这里写着我可以传递{{colname}}
给mutate
,其中colname
是一个包含列名的变量,我无法弄清楚为什么这段代码不起作用:
testdf <- data.frame(a=c("Hello", "Hi", "Howy"))
varname <- "a"
testdf %>% mutate(b=nchar({{varname}}))
它返回字母中的字符数a
:
a b
1 Hello 1
2 Hi 1
3 Howy 1
当第一列的名称保存到变量中时,如何计算一列中的字符数并将值分配给另一列?
作为
varname
一个角色,你可以使用.data
代词:出现此问题是因为当您在里面使用
{{varname}}
该变量时,没有计算其内容。varname
mutate()
在这种情况下,
{{varname}}
按字面意思处理,这就是为什么您只能看到1
每一行。为了解决这个问题,您可以简单地使用基础 R 来获得直接的解决方案。您可以这样做:
输出
testdf[[varname]]
varname
检索from指定的列testdf
。nchar(testdf[[varname]])
计算该列中每个元素的字符数。testdf$b <- ...
将这些计数分配给b
中的一个新列testdf
。因为它的设计就像
给予
正如用户 @AndreWildberg 在评论中指出的那样,您需要切换到
给予