假设我有以下内容 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矢量类的秒数?
我有一个制表符分隔的文件,有超过2亿行.linux中将此转换为csv文件的最快方法是什么?这个文件确实有多行标题信息,我需要在路上删除,但标题的行数是已知的.我已经看到了建议sed和gawk,但我不知道是否有一个"优先"选择.
只是为了澄清,此文件中没有嵌入的选项卡.
有关R的优秀Windows文本编辑器的任何建议吗?
我一直在使用Tinn-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()函数来更新值c和d
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()避免的创作,在这个具体的例子中, …
想象一下,你有一个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)
但是,有没有更好的方法呢?
假设我有一个矩阵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]))),它会在列表中返回一个列表,我希望避免这样做.
请使用以下代码:
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是一个"常规"的矢量矩阵?我想有一些手动的方法可以解决这个问题,但我想知道是否有一个明显的步骤,我错过了.
假设您具有以下功能foo.当我运行一个for循环时,我希望它foo在foo最初返回值时跳过余数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) 我debug()现在经常使用,但有时我想知道哪些函数已被标记为调试.我知道你可以isdebugged()用来查明某个特定功能是否被标记.但是R有没有办法列出所有正在调试的函数?
在这里的帖子的启发下,用R开发地理专题地图,我正在考虑构建一个基于邮政编码的等值区域图.我从http://www.census.gov/geo/www/cob/z52000.html下载了新罕布什尔州和缅因州的形状文件,但我有兴趣合并或合并这两个州的.shp文件.
maptools在使用中读取它们之后,包中是否有一种机制用于执行这种合并或串联两个.shp文件readShapeSpatial()?如果使用RgoogleMaps包装会更容易,也欢迎输入.