在未显示的 for 循环中创建新的 data.table 列
Creating new data.table columns within a for-loop not showing up
我正在尝试在 for 循环中创建列名。例如说我有以下 data.table
dt = structure(list(id = c("a", "b", "c"), val = c(1, 4, 6)), .Names = c("id",
"val"), row.names = c(NA, -3L), class = c("data.table", "data.frame"
))
我运行一个for
循环如下
for(i in seq(1:1)) { # 1:1 not a bug.
varname = 'flag1'
cname = 'val'
threshold = 4
expr = parse(text=paste0(varname, ' := (', cname, ' > ', threshold, ')'))
dt[, eval(expr)]
}
不知何故,当我不使用for
循环而只设置i=1
时,这有效,即一个名为[=17的新列=] 被创建。但是如果我 运行 它与 for
循环 data.table
并且我做 print(dt)
我什么也得不到。有人可以指出我做错了什么吗?我的实际用例涉及在 for 循环中创建布尔列名,该循环应用于本身存储为字符串向量的列。任何指点表示赞赏。
我认为这可能与此问题重复
尝试在循环的最后一行添加第二组方括号
for(i in seq(1:1)){
varname = 'flag1'
cname = 'val'
threshold = 4
expr = parse(text=paste0(varname, ' := (', cname, ' > ', threshold, ')'))
df[, eval(expr)][] #add brackets here
}
我正在尝试在 for 循环中创建列名。例如说我有以下 data.table
dt = structure(list(id = c("a", "b", "c"), val = c(1, 4, 6)), .Names = c("id",
"val"), row.names = c(NA, -3L), class = c("data.table", "data.frame"
))
我运行一个for
循环如下
for(i in seq(1:1)) { # 1:1 not a bug.
varname = 'flag1'
cname = 'val'
threshold = 4
expr = parse(text=paste0(varname, ' := (', cname, ' > ', threshold, ')'))
dt[, eval(expr)]
}
不知何故,当我不使用for
循环而只设置i=1
时,这有效,即一个名为[=17的新列=] 被创建。但是如果我 运行 它与 for
循环 data.table
并且我做 print(dt)
我什么也得不到。有人可以指出我做错了什么吗?我的实际用例涉及在 for 循环中创建布尔列名,该循环应用于本身存储为字符串向量的列。任何指点表示赞赏。
我认为这可能与此问题重复
尝试在循环的最后一行添加第二组方括号
for(i in seq(1:1)){
varname = 'flag1'
cname = 'val'
threshold = 4
expr = parse(text=paste0(varname, ' := (', cname, ' > ', threshold, ')'))
df[, eval(expr)][] #add brackets here
}