我需要绘制密度而不是频率的加权直方图.我知道这freq = FALSE
是可用的,hist()
但你不能指定权重.在ggplot2
我能做到这一点:
library(ggplot2)
w <- seq(1,1000)
w <-w/sum(w)
v <- sort(runif(1000))
foo <- data.frame(v, w)
ggplot(foo, aes(v, weight = w)) + geom_histogram()
Run Code Online (Sandbox Code Playgroud)
但在哪里相当于freq = FALSE
?
运用
system(paste("wc -l file_1.txt"))
Run Code Online (Sandbox Code Playgroud)
在R中获取文件的行号输出是
1601 file_1.txt
我的问题是如果我输入系统(粘贴("wc -l file_1.txt")) - > kt然后
kt
[1] 0
Run Code Online (Sandbox Code Playgroud)
我需要能够说是否
system(paste("wc -l file_1.txt"))->kt
kt[1]==1600
Run Code Online (Sandbox Code Playgroud)
或者不是..但我无法访问系统commadn或打印输出中的元素...我怎么能这样做以某种方式检查文件是否有1600行而不将其读入R中...
有一个带有以下数字的向量
f<-c(1,3,6,8,10,12,19,27)
Run Code Online (Sandbox Code Playgroud)
哪个元素最接近18.因此19将是最接近的元素,但函数需要返回6(这意味着值12),因为向量中的元素总是较小,除非它等于输入.如果输入为19则输出需要为7(索引)...
从一个文本文件我正在阅读二进制数据结构如下:
0101010100101010101010101010
1010101001010101010101010111
1111101010101010100101010101
Run Code Online (Sandbox Code Playgroud)
该文件有800行.每一行都是相同的长(但在文件之间有所不同,因此对其进行硬编码没有意义).我希望输入存储在一个数据框中,其中每一行都是一行,每两个数字存储在不同的列中,例如:
col1 col2 col3 col4
0 1 0 1
Run Code Online (Sandbox Code Playgroud)
目前我这样做
as.matrix(read.table(text=gsub("", ' ', readLines("input"))))->g
Run Code Online (Sandbox Code Playgroud)
然而,这需要太长时间,因为每行大约有70,000个0/1.
有更快的方法吗?
有一个R列表有子列表 - 我用list [[i]]索引 - 这些列表中的一些是空的 - 它们只是NULL.如何删除这些并保留存储矩阵的那些?
list[[1]]
[1,] 99 45
[2,] 92 45
[3,] 11 45
[4,] 99 45
[5,] 92 45
[6,] 99 2
[7,] 99 22
[8,] 99 2
Run Code Online (Sandbox Code Playgroud)
没关系,但是
list[[4]] NULL
Run Code Online (Sandbox Code Playgroud)
认为
delete.NULLs <- function(x.list){ # delele null/empty entries in a list
x.list[unlist(lapply(x.list, length) != 0)]
}
Run Code Online (Sandbox Code Playgroud)
会工作,但这很慢.我的列表有4000万个子列表,我想大多数都没有数字......
寻找一种从浮点数得到10的幂的方法
6.45e-8 - 将是8
3.21e-4将是4
0.013将是2
总的来说还是减去
是一个函数,它将执行以下操作,而不是乘以6.45e_8,它将首先除以1e-8然后乘以(6.45e-8/1e8 = ...).
我的数据如下:
S
0101001010000000000000000100111100000000000011101100010101010
1001010000000001100000000100000000000100000010101110101010010
1101010101010010000000000100000000100101010010110101010101011
0000000000000000001000000111000110000000000000000000000000000
Run Code Online (Sandbox Code Playgroud)
S表示我正在谈论的列.它是col 26.所有四行在该位置共享1.
我需要能够计算从2到4的每一行:
对于第2行,它将是右边的3(当它达到1/0时)和左边的8(当它达到0/1时).
应该将每行的结果输入到这样的矩阵中:
row2 8 3
row3 11 9
Run Code Online (Sandbox Code Playgroud)
是否有快速有效的方法来做到这一点?我正在处理的矩阵非常大.