首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >R:错误:意外的'=‘

R:错误:意外的'=‘
EN

Stack Overflow用户
提问于 2016-04-08 15:48:26
回答 1查看 9.5K关注 0票数 0

我有一个数据帧( df )、一个列名向量(foo)和一个函数(空格),它计算df指定列中所有行的值。我正在努力做到以下几点:

  1. 私有foo作为空格的输入
  2. 空格在foo的每个元素上操作,以匹配df中的列名。
  3. 对于每个列空间,将空格的输出存储在df的一个新列中,该列的列名是通过连接原始列的名称和".counts“生成的。

我一直收到错误:

代码语言:javascript
运行
复制
> Error: unexpected '=' in:
>"        new[i] <- paste0(foo[i],".count")  # New variable name 
>    data <- transform(data, new[i] ="
>    }
> Error: unexpected '}' in "    }"

下面是我的密码。注意:空格在提供表单df$x的单个变量的输入时会做我想做的事情,但是使用transform()应该允许我放弃,包括每个变量的前缀df$。

代码语言:javascript
运行
复制
# Create data for example
a <- c <- seq(1:5)
b <- c("1","1 2", "1 2 3","1 2 3 4","1 2 3 4 5")
d <- 10
df <- data.frame(a,b,c,d)  # data fram df
foo <- c("a","b")  # these are the names of the columns I want to provide to spaces

# Define function: spaces
spaces <- function(s) { sapply(gregexpr(" ", s), function(p) { sum(p>=0) } ) }

# Initialize vector with new variable names
new <- vector(length = length(foo))

# Create loop with following steps:
  # (1) New variable name 
  # (2) Each element (e.g. "x") of foo is fed to spaces
  #     a new variable (e.g. "x.count") is created in df,
  #     this new df overwrites the old df

for (i in 1:length(foo)) {
    new[i] <- paste0(foo[i],".count")  # New variable name 
    df <- transform(df, new[i] = spaces(foo[i]))  # Function and new df
}
EN

回答 1

Stack Overflow用户

发布于 2016-04-08 15:52:39

transform(df, new[i] = spaces(foo[i]))不是有效的语法。不能通过索引调用参数名。创建一个临时字符串并使用该字符串。

代码语言:javascript
运行
复制
for (i in 1:length(foo)) {
  new[i] <- paste0(foo[i],".count")  # New variable name 
  tmp <- paste0(new[i], ".counts")
  df <- transform(df, tmp = spaces(foo[i]))  # Function and new df
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36503978

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档