小编Blu*_*ter的帖子

如何在R中读取具有不同列数的CSV文件

我有一个稀疏数据集,其列数以csv格式变化.以下是文件文本的示例.

12223, University
12227, bridge, Sky
12828, Sunset
13801, Ground
14853, Tranceamerica
14854, San Francisco
15595, shibuya, Shrine
16126, fog, San Francisco
16520, California, ocean, summer, golden gate, beach, San Francisco
Run Code Online (Sandbox Code Playgroud)

我用的时候

read.csv("data.txt", header = F)
Run Code Online (Sandbox Code Playgroud)

R将数据集解释为具有3列,因为大小是从前5行确定的.无论如何强制r将数据放在更多列中?

csv import r read.table sparse-columns

41
推荐指数
2
解决办法
3万
查看次数

如何只读取文件中的选择列到R?(`read.table`和`scan`之间的一个愉快的媒介?)

我有一些非常大的分隔数据文件,我想只处理R中的某些列而不花时间和内存来创建data.frame整个文件.

我所知道的唯一选择是read.table,当我只想要几列或者scan看起来我想要的水平太低时非常浪费.

有没有更好的选择,无论是使用纯R还是调用其他shell脚本来进行列提取,然后在其输出上使用scan或read.table?(这导致了如何调用shell脚本并在R中捕获其输出的问题).

r delimited data-processing read.table

40
推荐指数
3
解决办法
7万
查看次数

计算数据帧中的非NA; 得到答案作为矢量

说我有以下R data.frame ZZZ:

( ZZZ <- structure(list(n = c(1, 2, NA), m = c(6, NA, NA), o = c(7, 8, 
8)), .Names = c("n", "m", "o"), row.names = c(NA, -3L), class = "data.frame") )

## not run
   n  m o
1  1  6 7
2  2 NA 8
3 NA NA 8
Run Code Online (Sandbox Code Playgroud)

我想以矢量的形式知道我有多少非NA.我希望得到的答案是:

2, 1, 3
Run Code Online (Sandbox Code Playgroud)

当我使用命令时length(ZZZ),我得到了3,当然是data.frame中的向量数量,这是一个足够有价值的信息.

我有其他函数在这个data.frame上运行,并以向量的形式给我答案,但是,dang-it,length不会像那样运行.

r na

23
推荐指数
3
解决办法
6万
查看次数

无法使用"#"读取文件,使用R中的read.table或read.csv读取空格

我有一个文件,其中第一行是标题.标题可以包含空格和#符号(也可能有其他特殊字符).我试图使用read.csv或read.table读取此文件,但它一直让我犯错误:

undefined columns selected 

more columns than column names 
Run Code Online (Sandbox Code Playgroud)

我的制表符分隔的chromFile文件如下所示:

Chromosome# Chr chr Size    UCSC NCBI36/hg18    NCBIBuild36 NCBIBuild37
1   Chr1    chr1    247199719   247249719   247249719   249250621
2   Chr2    chr2    242751149   242951149   242951149   243199373
Run Code Online (Sandbox Code Playgroud)

命令:

chromosomes <- read.csv(chromFile, sep="\t",skip =0, header = TRUE,  )
Run Code Online (Sandbox Code Playgroud)

我想首先寻找一种方法来读取文件,而不是替换空格或#与其他可读符号.

import r read.table

18
推荐指数
1
解决办法
1万
查看次数

交替,交织或交织两个向量

我想交织两个相同模式和相同长度的向量.说:

a <- rpois(lambda=3,n=5e5)
b <- rpois(lambda=4,n=5e5)
Run Code Online (Sandbox Code Playgroud)

我想交织或交织这两个向量,以创建一个等价的向量 c(a[1],b[1],a[2],b[2],...,a[length(a)],b[length(b)])

我的第一次尝试是这样的:

sapply(X=rep.int(c(3,4),times=5e5),FUN=rpois,n=1)
Run Code Online (Sandbox Code Playgroud)

但它需要rpois被召唤的次数远远超过需要.

到目前为止,我最好的尝试是将其转换为矩阵并重新转换为向量:

d <- c(rbind(rpois(lambda=3,n=5e5),rpois(lambda=4,n=5e5)))
d <- c(rbind(a,b))
Run Code Online (Sandbox Code Playgroud)

有没有更好的方法去做呢?或者在基地有一个功能R完成同样的事情?

r vector

16
推荐指数
1
解决办法
4150
查看次数

if-else vs ifelse with lists

为什么if-else结构和函数ifelse()的行为不同?

mylist <- list(list(a=1, b=2), list(x=10, y=20))

l1 <- ifelse(sum(sapply(mylist, class) != "list")==0, mylist, list(mylist))

l2 <-
if(sum(sapply(mylist, class) != "list") == 0){  # T: all list elements are lists
  mylist
} else {
  list(mylist)
}

all.equal(l1,l2)
#  [1] "Length mismatch: comparison on first 1 components"
Run Code Online (Sandbox Code Playgroud)

if-statement r

11
推荐指数
2
解决办法
9974
查看次数

在运行时分配后是只读的变量?

相当新的程序员在这里,并为愚蠢的问题提前道歉.

int在程序中有一个变量,用于确定我的某些结构中数组的长度.我以前把它放在我的标题中const int.现在,我想分叉我的程序,根据给定的参数给变量赋予不同的值,但在运行时分配后保持只读.

我必须做的一些想法.有首选方式吗?

  1. const int *在我的标题中声明一个并将其分配给const int我的主函数,但这看起来很笨拙.
  2. int在我的主要功能中使它成为一个简单的.
  3. 调用函数时,将变量作为参数传递.
  4. 我尚未想到的其他东西.

c++ const constants

8
推荐指数
2
解决办法
5917
查看次数

在表中用NA替换0

我通常使用数据帧并且可以轻松地为数据框执行此操作,但在我当前的项目中,我需要在表结构中用NA替换所有零.对于以下两个表(一个使用表而另一个使用ftable)如何用NA替换所有零计数?

x <- with(mtcars,table(am, gear, cyl, vs))

x2 <- with(mtcars,ftable(am, gear, cyl, vs))
Run Code Online (Sandbox Code Playgroud)

r na

7
推荐指数
1
解决办法
751
查看次数

从R中的数据帧绘制多条线

我正在构建一个R函数来绘制数据表中的几行,我不明白为什么这不起作用?

data = read.table(path, header=TRUE);
plot(data$noop);
lines(data$noop, col="blue");
lines(data$plus, col="green");
Run Code Online (Sandbox Code Playgroud)

我正在从我拥有的文件中读取数据,其格式如下:

 noop         plus         mins
 33.3         33.3         33.3
 30.0         40.0         30.0
 25.0         50.0         25.0
Run Code Online (Sandbox Code Playgroud)

这是数据集的最小表示,包含更多标题和更多数据点.因此,该数据集的每一行都反映了在给定时间采集的样本.所以我的目标是从文件中读取这些数据,然后将每列绘制为由不同颜色的线连接的一系列点.

我目前使用的方法只是绘制1行,而不是多行.

plot r graph

6
推荐指数
2
解决办法
6万
查看次数

as.Date()不尊重POSIXct时区

好吧所以这里是一个微妙的"怪癖"在r as.Date函数转换为带有时区的POSIXct,我想知道它是否是一个bug.

> as.POSIXct("2013-03-29", tz = "Europe/London")
[1] "2013-03-29 GMT"
> as.Date(as.POSIXct("2013-03-29", tz = "Europe/London"))
[1] "2013-03-29"
Run Code Online (Sandbox Code Playgroud)

到目前为止没有问题,但.....

> as.POSIXct("2013-04-01", tz = "Europe/London")
[1] "2013-04-01 BST"
> as.Date(as.POSIXct("2013-04-01", tz = "Europe/London"))
[1] "2013-03-31"
Run Code Online (Sandbox Code Playgroud)

有谁见过这个?这是一个错误还是另一个怪癖?愚人节?

datetime r date posixct

6
推荐指数
1
解决办法
453
查看次数