小编and*_*ewj的帖子

从POSIXct中提取小时和秒以便在R中进行绘图

假设我有以下内容 data.frame foo

           start.time duration
1 2012-02-06 15:47:00      1
2 2012-02-06 15:02:00      2
3 2012-02-22 10:08:00      3
4 2012-02-22 09:32:00      4
5 2012-03-21 13:47:00      5
Run Code Online (Sandbox Code Playgroud)

class(foo$start.time)返回

[1] "POSIXct" "POSIXt" 
Run Code Online (Sandbox Code Playgroud)

我想创建一个foo$durationv.的情节foo$start.time.在我的场景中,我只对一天中的时间而不是一年中的实际日期感兴趣.如何将一天中的时间提取为几小时:来自POSIXct矢量类的秒数?

datetime r ggplot2 lubridate

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

最快的方法是将制表符分隔的文件转换为linux中的csv

我有一个制表符分隔的文件,有超过2亿行.linux中将此转换为csv文件的最快方法是什么?这个文件确实有多行标题信息,我需要在路上删除,但标题的行数是已知的.我已经看到了建议sedgawk,但我不知道是否有一个"优先"选择.

只是为了澄清,此文件中没有嵌入的选项卡.

linux csv

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

适用于R的Windows文本编辑器的建议

有关R的优秀Windows文本编辑器的任何建议吗?

我一直在使用Tinn-R,它一直运作得相当好,但很想知道人们还有什么用.

r text-editor

38
推荐指数
7
解决办法
5万
查看次数

如何使用merge()更新R中的表

我正在试图弄清楚如何使用merge()更新数据库.

这是一个例子.以数据框为例foo

foo <- data.frame(index=c('a', 'b', 'c', 'd'), value=c(100, 101, NA, NA))
Run Code Online (Sandbox Code Playgroud)

其中包含以下值

index value
1     a   100
2     b   101
3     c    NA
4     d    NA
Run Code Online (Sandbox Code Playgroud)

和数据框架 bar

bar <- data.frame(index=c('c', 'd'), value=c(200, 201))
Run Code Online (Sandbox Code Playgroud)

其中包含以下值:

 index value
1     c   200
2     d   201
Run Code Online (Sandbox Code Playgroud)

当我运行下面的merge()函数来更新值cd

merge(foo, bar, by='index', all=T)
Run Code Online (Sandbox Code Playgroud)

它导致此输出:

 index value.x value.y
1     a     100      NA
2     b     101      NA
3     c      NA     200
4     d      NA     201
Run Code Online (Sandbox Code Playgroud)

我想输出的merge()避免的创作,在这个具体的例子中, …

merge r

19
推荐指数
2
解决办法
8195
查看次数

确定R中加载的对象的名称

想象一下,你有一个foo你保存的对象saved.file.rda如下:

foo <- 'a'
save(foo, file='saved.file.rda')
Run Code Online (Sandbox Code Playgroud)

假设您加载saved.file.rda到具有多个对象的环境中但忘记了所在对象的名称saved.file.rda.R中有没有办法确定这个名字?

您可以通过以下方式执行此操作,这看起来有点笨重:

bar <- load('saved.file.rda')
eval(parse(text=bar)) # this will pull up the object that was in saved.file.rda
Run Code Online (Sandbox Code Playgroud)

但是,有没有更好的方法呢?

r

13
推荐指数
2
解决办法
8355
查看次数

将矩阵转换为列表

假设我有一个矩阵foo如下:

foo <- cbind(c(1,2,3), c(15,16,17))

> foo
     [,1] [,2]
[1,]    1   15
[2,]    2   16
[3,]    3   17
Run Code Online (Sandbox Code Playgroud)

我想把它变成一个看起来像的列表

[[1]]
[1]  1 15

[[2]]
[1]  2 16

[[3]]
[1]  3 17
Run Code Online (Sandbox Code Playgroud)

你可以这样做:

lapply(apply(foo, 1, function(x) list(c(x[1], x[2]))), function(y) unlist(y))

我对另一种不那么复杂的方法感兴趣.注意,如果你这样做apply(foo, 1, function(x) list(c(x[1], x[2]))),它会在列表中返回一个列表,我希望避免这样做.

r list matrix

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

将列表矩阵转换为常规矩阵

请使用以下代码:

foo <- list()
foo[[1]] <- list(a=1, b=2)
foo[[2]] <- list(a=11, b=22)
foo[[3]] <- list(a=111, b=222)
result <- do.call(rbind, foo)
result[,'a']
Run Code Online (Sandbox Code Playgroud)

在这种情况下,result[,'a']显示一个列表.是否有更优雅的方式,这result是一个"常规"的矢量矩阵?我想有一些手动的方法可以解决这个问题,但我想知道是否有一个明显的步骤,我错过了.

r list matrix

8
推荐指数
1
解决办法
7264
查看次数

在R中的for循环中运行函数时,断开for循环

假设您具有以下功能foo.当我运行一个for循环时,我希望它foofoo最初返回值时跳过余数0.但是,break当它在函数内时不起作用.

正如它目前所写,我收到一条错误消息no loop to break from, jumping to top level.

有什么建议?

foo <- function(x) {
    y <- x-2
    if (y==0) {break} # how do I tell the for loop to skip this
    z <- y + 100
    z
}


for (i in 1:3) {
    print(foo(i))
}
Run Code Online (Sandbox Code Playgroud)

for-loop r

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

你怎么知道R中哪些函数被标记为调试?

debug()现在经常使用,但有时我想知道哪些函数已被标记为调试.我知道你可以isdebugged()用来查明某个特定功能是否被标记.但是R有没有办法列出所有正在调试的函数?

debugging r

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

在R中制作一个等值线:合并来自多个州的邮政编码shapefile

在这里的帖子的启发下,用R开发地理专题地图,我正在考虑构建一个基于邮政编码的等值区域图.我从http://www.census.gov/geo/www/cob/z52000.html下载了新罕布什尔州和缅因州的形状文件,但我有兴趣合并或合并这两个州的.shp文件.

maptools在使用中读取它们之后,包中是否有一种机制用于执行这种合并或串联两个.shp文件readShapeSpatial()?如果使用RgoogleMaps包装会更容易,也欢迎输入.

r shapefile

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

标签 统计

r ×9

list ×2

matrix ×2

csv ×1

datetime ×1

debugging ×1

for-loop ×1

ggplot2 ×1

linux ×1

lubridate ×1

merge ×1

shapefile ×1

text-editor ×1