- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用data.table
1.10.0。
# install.packages("install.load") # install in order to use the load_package function
install.load::load_package("data.table", "gsubfn", "fpCompare")
# function to convert from fractions and numeric numbers to numeric (decimal)
# Source 1 begins
to_numeric <- function(n) {
p <- c(if (length(n) == 2) 0, as.numeric(n), 0:1)
p[1] + p[2] / p[3]
}
# Source 1 ends
来源 1 是 Convert a character vector of mixed numbers, fractions, and integers to numeric
max_size_aggr <- 3 / 4
water_nonair <- structure(list(`Slump (in.)` = c("1 to 2", "3 to 4", "6 to 7",
"Approximate amount of entrapped air in nonair- entrained concrete (%)"), `3/8 in.` =
c(350, 385, 410, 3), `1/2 in.` = c(335, 365, 385, 2.5), `3/4 in.` = c(315, 340, 360, 2),
`1 in.` = c(300, 325, 340, 1.5), `1 1/2 in.` = c(275, 300, 315, 1), `2 in.` =
c(260, 285, 300, 0.5), `3 in.` = c(220, 245, 270, 0.3), `6 in.` = c(190, 210, NA, 0.2)),
.Names = c("Slump (in.)", "3/8 in.", "1/2 in.",
"3/4 in.", "1 in.", "1 1/2 in.", "2 in.", "3 in.", "6 in."), row.names = c(NA, -4L),
class = c("data.table", "data.frame"))
setnames(water_nonair, c("Slump (in.)", "3/8 in.", "1/2 in.", "3/4 in.", "1 in.",
"1 1/2 in.", "2 in.", "3 in.", "6 in."))
water_nonair_col_numeric <- gsub(" in.", "", colnames(water_nonair)[2:ncol(water_nonair)])
water_nonair_col_numeric <- sapply(strapplyc(water_nonair_col_numeric, "\\d+"), to_numeric)
# Source 1
新方式(data.table
1.10.0)
water_nonair_column <- which(water_nonair_col_numeric %==% max_size_aggr)+1L
# [1] 4
water_nonair[2, water_nonair_column][[1]]
# [1] 4
为什么当我调出列索引时以下可以工作,但上面的值为 4 时也不起作用?
water_nonair[2, 4][[1]]
# [1] 340
旧方法(data.table
1.9.6)
water_nonair[2, which(water_nonair_col_numeric %==% max_size_aggr)+1L, with = FALSE][[1]]
# [1] 340
1.9.8版本发布后,我在阅读了data.table
消息后,从函数中删除了with = FALSE
。
最佳答案
v1.9.8 NEWS中的长注释3开始:
When j contains no unquoted variable names (whether column names or not),
with=
is now automatically set toFALSE
. Thus ...
但是您的j
确实包含不带引号的变量名称。事实上,它只是一个不带引号的变量名。因此该项目不适用于它。
这就是 options(datatable.WhenJisSymbolThenCallingScope=TRUE)
的用途,以便您可以尝试 future 的新功能。请再次阅读有关该内容的同一新闻。如果您设置该选项,它将按照您的预期工作。
但是请不要这样做。因为昨天我改变了它,并且在开发过程中该选项现在已经消失了。不再需要迁移时间表。新策略不需要更改代码,也不会造成任何破坏。请参阅 latest development NEWS for v1.10.1 中的新注释。为了避免重复,我不会在这里复制它们。
因此,当 j
是一个符号(即不带引号的变量名)时,您仍然需要 with=FALSE
:
water_nonair[2, water_nonair_column, with=FALSE]
或者您可以使用昨天添加的 v1.10.1 中的新 ..
前缀:
water_nonair[2, ..water_nonair_column]
否则,如果 j
是一个符号,那么为了安全性、一致性和向后兼容性,它必须是列名。如果没有,您现在将收到新的更有用的错误消息:
DT = data.table(a=1:3, b=4:6)
myCols = "b"
DT[,myCols]
Error in `[.data.table`(DT, , myCols) :
j (the 2nd argument inside [...]) is a single symbol but column name
'myCols' is not found. Perhaps you intended DT[,..myCols] or
DT[,myCols,with=FALSE]. This difference to data.frame is deliberate
and explained in FAQ 1.1.
正如 NEWS 中提到的,我重新运行了所有使用 data.table 与 data.table v1.10.1 的 313 个 CRAN 和 Bioconductor 软件包,其中 2 个软件包确实因这一更改而中断。但这正是我们想要的,因为它们确实有一个错误(调用范围中的 j
值按字面意思返回,这不是预期的)。我已经通知了他们的维护者。这正是我们想要揭示和改进的。其他 311 个软件包均通过此更改。它不依赖于测试覆盖率(这对于许多包来说很弱)。当 j
是不是列的符号时,无论是否对结果进行测试,都会发生新错误。
关于r - data.table 1.10.0 - 为什么命名列索引值不起作用,而整数列索引值在没有 with = FALSE 的情况下起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41051890/
我正在尝试学习 Fortran,并且看到了很多不同的定义,我想知道他们是否正在尝试完成同样的事情。以下有什么区别? 整数*4 整数(4) 整数(kind=4) 最佳答案 在 Fortran >=90
我以前从未编程过,最近(1 周前)才开始学习!第一门类(class)是函数式编程,使用 Haskell。 我有一项学校作业,我想通过删除一两个步骤来改进它,但我遇到了一个讨厌的错误。 基本上,我创建了
给定以下GraphQL请求和变量: 请求: query accounts($filter:AccountFilter, $first_:String, $skip_:Int) { accounts
我已经搜索了 StackOverflow,但找不到关于如何检查计算器应用程序的数字输入正则表达式的答案,该计算器应用程序将检查每个 keyup 的以下格式(jquery key up): 任何整数,例
类似于我上一篇致歉的文章,但没有那么长篇大论。基本上我想知道当每次重绘调用只重绘屏幕的一小部分时,优化重绘到 JFrame/JPanel 的最佳选择是什么。 此外,除了重绘重载之外,我并不是 100%
所以在我的教科书中有一个使用 f# 的递归函数的例子 let rec gcd = function | (0,n) -> n | (m,n) -> gcd(n % m,m);; 使用此功能,我的教科书
我有一个数据结构,例如表达式树或图形。我想添加一些“测量”功能,例如depth和 size . 如何最好地键入这些函数? 我认为以下三个变体的用处大致相同: depth :: Expr -> Int
这样写比较好 int primitive1 = 3, primitive2 = 4; Integer a = new Integer(primitive1); Integer b = new Inte
我是 Java 8 新手,想根据键对 Map 进行排序,然后在值内对每个列表进行排序。 我试图寻找一种 Java 8 方法来对键和值进行排序。HashMap>映射 map.entrySet().str
这就是我的目标... vector ,int> > var_name (x, pair (y),int>); 其中 x 是 vector var_name 的大小,y 是对内 vector 的大小。
这里是 an answer to "How do I instantiate a Queue object in java?" , Queue is an interface. You can't i
这个问题在这里已经有了答案: Weird Integer boxing in Java (12 个答案) Why are autoboxed Integers and .getClass() val
我们可以使用 C++ STL 做这样的事情吗?如果是,我将如何初始化元素?我试图这样做,但没有成功。 pair,vector>p; p.first[0]=2; 最佳答案 Can we do som
您好,我正在尝试为百分比和整数数组中的数字找到索引。假设 arraynum = ['10%','250','20%','500'] 并且用户发送一个值 15%,这个数字在哪个范围内居住?我可以使用这段
我与三列有关系:ProductName、CategoryID 和 Price。我需要选择仅那些价格高于给定类别中平均产品价格的产品。(例如,当apple(ProductName)是fruit(Cate
我已经坚持了一段时间,我正在尝试将一些数据配对在一起。这是我的代码。 #include #include using namespace std; int main() { pair data(
我收到错误:'(Int, Int)' 与 'CGPoint' 不相同 如何将 (Int, Int) 转换为 CGPoint let zigzag = [(100,100), (100,150)
我在 .cpp 文件中发现了以下代码。我不理解涉及头文件的构造或语法。我确实认识到这些特定的头文件与 Android NDK 相关。但是,我认为这个问题是关于 C++ 语法的一般问题。这些在某种程度上
我将这些输入到 Scala 解释器中: val a : Integer = 1; val b : Integer = a + 1; 我收到消息: :5: error: type mismatch;
C++:vector>v(size);当我试图打印出值时显示 0 作为值,但是当未声明 vector 大小时它显示正确的输出?为什么这样?例如: int x; cin>>x; vector>v(x);
我是一名优秀的程序员,十分优秀!