我有一个data.table逻辑列.为什么逻辑列的名称不能直接用于i参数?查看示例.
dt <- data.table(x = c(T, T, F, T), y = 1:4)
# Works
dt[dt$x]
dt[!dt$x]
# Works
dt[x == T]
dt[x == F]
# Does not work
dt[x]
dt[!x]
Run Code Online (Sandbox Code Playgroud) 我有一个文本文件,开头有字节顺序标记(U + FEFF).我试图在R中读取文件.是否可以避免字节顺序标记?
函数fread(来自data.table包)读取文件,但?»æ在第一个变量名的开头添加:
> names(frame_pers)[1]
[1] "?Ⱦreg_date"
Run Code Online (Sandbox Code Playgroud)
同样是与read.csv功能.
目前我已经创建了一个从第一列名称中删除BOM的功能,但我相信应该有一种方法来自动剥离BOM.
remove.BOM <- function(x) setnames(x, 1, substring(names(x)[1], 4))
> names(frame_pers)[1]
[1] "?Ⱦreg_date"
> remove.BOM(frame_pers)
> names(frame_pers)[1]
[1] "reg_date"
Run Code Online (Sandbox Code Playgroud)
我正在使用R会话的本机编码:
> options("encoding" = "")
> options("encoding")
$encoding
[1] ""
Run Code Online (Sandbox Code Playgroud) 我无法理解这一点.
这些例子正在起作用:
# Function with geom_density
gr.den <- function(var.name) {
ggplot(results, aes(get(var.name), fill = name)) +
geom_density(alpha = 0.2) +
geom_vline(xintercept = tv[, var.name], color="red", size=1) +
xlab(var.name)
}
gr.den("sum.Empl")
# Example with geom_point
ggplot(results, aes(sum.All, sum.Empl)) +
geom_point(alpha = 1/5) +
opts(aspect.ratio = 1) +
facet_grid(. ~ name)
Run Code Online (Sandbox Code Playgroud)
然后我尝试使用geom_point创建类似的功能:
gr.sc <- function(var.name.1, var.name.2) {
ggplot(results, aes(get(var.name.1), get(var.name.2))) +
geom_point(alpha = 1/5) +
opts(aspect.ratio = 1) +
facet_grid(. ~ name)
}
gr.sc("sum.All", "sum.Empl")
Run Code Online (Sandbox Code Playgroud)
我收到了这个错误.为什么?
Error in get(var.name.1) : object 'var.name.1' …Run Code Online (Sandbox Code Playgroud) 我有一个这样的列表:
arg0 <- list(code = "a", n = rep(10, 3))
Run Code Online (Sandbox Code Playgroud)
列表中的对象数是可变的.列表的对象是向量 - 只有一维对象.
我想创建一个过程将列表转换为一行data.frame,如下所示:
> data.frame(code = "a", n.1 = 10, n.2 = 10, n.3 = 10)
code n.1 n.2 n.3
1 a 10 10 10
Run Code Online (Sandbox Code Playgroud)
我目前有这个解决方案:
a <- stack(arg0)
b <- data.frame(t(a[,1]))
names(b) <- a[,2]
b <- data.frame(b)
Run Code Online (Sandbox Code Playgroud)
b几乎我想要实现的结果在哪里:
> b
code n n.1 n.2
1 a 10 10 10
Run Code Online (Sandbox Code Playgroud)
两个问题:
c(n.1,
n.2, n.3)吗?我正在寻找一个解决方案,用data.table计算一些变量的加权和.我希望这个例子足够清楚.
require(data.table)
dt <- data.table(matrix(1:200, nrow = 10))
dt[, gr := c(rep(1,5), rep(2,5))]
dt[, w := 2]
# Error: object 'w' not found
dt[, lapply(.SD, function(x) sum(x * w)),
.SDcols = paste0("V", 1:4)]
# Error: object 'w' not found
dt[, lapply(.SD * w, sum),
.SDcols = paste0("V", 1:4)]
# This works with out groups
dt[, lapply(.SD, function(x) sum(x * dt$w)),
.SDcols = paste0("V", 1:4)]
# It does not work by groups
dt[, lapply(.SD, function(x) sum(x * dt$w)),
.SDcols = paste0("V", …Run Code Online (Sandbox Code Playgroud) 我尝试安装拨浪鼓和 RGtk2。我用了
\ninstall.packages(\n "https://cran.microsoft.com/snapshot/2021-12-15/bin/windows/contrib/4.1/RGtk2_2.20.36.2.zip",\n repos = NULL\n)\nRun Code Online (Sandbox Code Playgroud)\n安装 RGtk2。
\n然后我收到一条错误消息说
\nError in install.packages : package \xe2\x80\x98RGtk2\xe2\x80\x99 not installed because it is not built for UCRT\nRun Code Online (Sandbox Code Playgroud)\n我想知道如何解决这个问题?\n谢谢~
\n我的数据集包含两列:
Date类,所以不是字符串yyyy-mm-dd;我想删除 2017 年的所有行。
df$date > "2016-12-31" (因此使用 > 符号)不断发出警告
“日期错误 > “2016-12-31”:比较 (6) 仅适用于原子和列表类型”
在我尝试过的很多很多方法中。似乎不能使用简单的“<”,即使这些是大多数在线解决方案。知道如何以另一种方式删除某一年的行吗?