有类似的帖子,但实际上没有一个是由这个错误引起的?
我想以这种.csv格式获取输入:separator";" 和十进制"."
Parameter;Intensitaet;Wert
se;1;0.027
se;1;0.024
se;1;0.021
se;1;0.018
se;1;0.015
se;1;0.012
Run Code Online (Sandbox Code Playgroud)
我得到的是:
Parameter;Intensitaet;Wert
se;2;0,0572
se;2;0,2
se;2;0,1
se;2;0,4
se;2;0,0795
Run Code Online (Sandbox Code Playgroud)
已尝试此代码的各种版本:
> write.csv(final, "SEmurgang.csv", row.names = F, quote = F, sep = ";")
Warning message:
In write.csv(final, "SEmurgang.csv", row.names = F, quote = F, sep = ";") :
Versuch ignoriert 'sep' zu setzen
> write.csv2(final, "SEmurgang.csv", row.names = F, quote = F, dec=".")
Warning message:
In write.csv2(final, "SEmurgang.csv", row.names = F, quote = F, :
Versuch ignoriert 'dec' zu setzen
Run Code Online (Sandbox Code Playgroud)
但是我总是得到同样的错误.我该怎么办呢?
提前致谢!
我有一个data.table有很多列的。有 4 列我想NA用 0 替换。
我有一个可行的解决方案:
claimsMonthly[is.na(claim9month),claim9month := 0
][is.na(claim10month),claim10month := 0
][is.na(claim11month),claim11month := 0
][is.na(claim12month),claim12month := 0]
Run Code Online (Sandbox Code Playgroud)
然而,这是相当重复的,我想通过使用循环来减少这种情况(但不确定这是否是最聪明的想法?):
for (i in 9:12){
claimsMonthly[is.na(paste0("claim", i, "month")), paste0("claim", i, "month") := 0]
}
Run Code Online (Sandbox Code Playgroud)
当我运行这个循环时,什么也没有发生。我猜是因为约定的回报paste0(),"claim12month"所以我得到了in.na("claim12month")。其结果是FALSE尽管我的数据中有这样的事实NA。我想这与引用有关?
这不是我第一次遇到使用paste0()或运行循环的问题data.table,所以我一定在这里遗漏了一些重要的东西。
任何想法如何解决这一问题?
我知道这个问题已经被问过多次了,但是尽管尝试应用上述解决方案,但我还是无法解决我的小问题:
我已经保存了所有要合并到一个文件夹中的.csv文件:
> file_list <- list.files()
> file_list[]
[1] "SR-einfam.csv" "SR-garage.csv" "SR-hotel.csv"
[4] "SR-IndustrieGewerbe.csv" "SR-mehrfam.csv" "SR-OffG.csv"
Run Code Online (Sandbox Code Playgroud)
我使用do.calltio将它们全部合并。请注意,所有文件都具有相同的格式。
sr.master <- do.call("rbind", lapply(file_list, read.csv, sep = ";", header = TRUE))
names(sr.master)
str(sr.master)
Run Code Online (Sandbox Code Playgroud)
但是,在检查完生成的文件后,我意识到只有第一个文件已导入。是什么导致此问题?
> str(sr.master)
'data.frame': 1941 obs. of 8 variables:
$ Berechnung: Factor w/ 51 levels "Berechnung 1",..: 51 1 12 23 34 45 47 48 49 50 ...
$ Situation : Factor w/ 13 levels "Nach Massnahme 0",..: 6 6 6 6 6 6 6 6 6 …Run Code Online (Sandbox Code Playgroud) 我有以下数据:
dput(mydata)
structure(list(groupSize = structure(c(2L, 1L, 2L, 1L, 4L, 4L,
3L, 3L, 2L, 2L, 1L, 1L, 3L, 3L, 4L, 4L, 2L, 2L, 1L, 1L, 3L, 3L,
4L, 4L, 3L, 3L, 2L, 2L, 1L, 1L, 4L, 4L, 2L, 2L, 4L, 4L, 3L, 3L,
1L, 1L), .Label = c("small", "intermediate", "large", "huge"), class = "factor"),
gender = structure(c(1L, 1L, 2L, 2L, 1L, 2L, 1L, 2L, 1L,
2L, 1L, 2L, 1L, 2L, 2L, 1L, 1L, 2L, 1L, 2L, 1L, 2L, 2L, 1L,
1L, …Run Code Online (Sandbox Code Playgroud) 我正在计算存储在列表中的一些值,并将该列表附加到一个名为 的现有列表中results。在某些情况下,计算会返回TRUE。TRUE在这种情况下,我想删除从列表返回的元素:
my_list
$`0`
[1] TRUE
$`1`
[1] TRUE
my_list = lapply(list(my_list), function(x){Filter(Negate(isTRUE), x)})
> my_list
[[1]]
named list()
Run Code Online (Sandbox Code Playgroud)
这将返回一个空列表。现在我想检查一下:
问题是当我检查时
length(my_list) >0
[1] TRUE
Run Code Online (Sandbox Code Playgroud)
如何检测列表是否为空?
我知道可以在 R 中同时替换多个项目。我有以下命令序列:
如何仅使用键盘修改框中的所有项目?我知道查找功能和键盘快捷键帮助,但这不是我要找的。
也许有人可以建议对类似技巧和快捷方式进行很好的总结?我在 youtube 上简单浏览了一下,没有令人满意的发现。
我注意到以下两个命令产生非常不同的结果,所以我想知道有什么区别?
TestData <- TestData[, keyby = c("group","date"),
.(totalCount = sum(count))]
TestData <- TestData[, by = c("group","date"),
.(totalCount = sum(count))]
Run Code Online (Sandbox Code Playgroud)
根据备忘单:
dt[, j, by = .(a)] – 按指定列中的值对行进行分组。
和
dt[, j, keyby = .(a)] – 按指定列中的值对行进行分组和同时排序。
我想知道是否有一种简单的方法来创建一个包含列和行总计的表?
smoke <- matrix(c(51,43,22,92,28,21,68,22,9),ncol=3,byrow=TRUE)
colnames(smoke) <- c("High","Low","Middle")
rownames(smoke) <- c("current","former","never")
smoke <- as.table(smoke)
Run Code Online (Sandbox Code Playgroud)
我认为这会非常简单,但到目前为止我发现的解决方案似乎相当复杂,涉及lapply和rbind。然而,这似乎是一个微不足道的任务,一定有一些更简单的方法吗?
预期结果:
> smoke
High Low Middle TOTAL
current 51 43 22 116
former 92 28 21 141
never 68 22 9 99
TOTAL 211 93 52 51
Run Code Online (Sandbox Code Playgroud) 我有一个变量:
x$value
[[1]]
NULL
Run Code Online (Sandbox Code Playgroud)
但是当我跑步时,is.null(x$value)我得到:
is.null(x$value)
[1] FALSE
Run Code Online (Sandbox Code Playgroud)
这怎么可能?我怎样才能解决这个问题?我在sum(sapply((data$iteration), FUN = function(x) {ifelse(is.null(x$value), 0, x$value)}), na.rm = TRUE)一个错误中使用它:
Error in sum(sapply((data$iteration), FUN = function(x) { :
invalid 'type' (list) of argument
Run Code Online (Sandbox Code Playgroud)