小编era*_*rtg的帖子

通过远离for循环来提高性能

论证的要点如下:

我编写的函数考虑了一个参数,一个字母数字字符串,并且应该输出一个字符串,其中该字母数字字符串的每个元素的值被切换以进行某些"映射".MRE如下:

#This is the original and switches value map
map = data.table(mapped = c(0:35), original = c(0:9,LETTERS))
#the function that I'm using:
as_numbers <- function(string) {
  #split string unlisted
  vector_unlisted <- unlist(strsplit(string,""))
  #match the string in vector
  for (i in 1:length(vector_unlisted)) {

    vector_unlisted[i] <- subset(map, map$original==vector_unlisted[i])[[1]][1]

  }
  vector_unlisted <- paste0(vector_unlisted, collapse = "")

  return(vector_unlisted)
}
Run Code Online (Sandbox Code Playgroud)

我正试图摆脱for loop那些提高性能的东西,因为函数可以正常工作,但是对于我在这种形式下提供的元素数量而言,这是非常缓慢的:

unlist(lapply(dat$alphanum, function(x) as_numbers(x)))
Run Code Online (Sandbox Code Playgroud)

输入字符串的一个例子是:549300JV8KEETQJYUG13.这应该会产生一个字符串5493001931820141429261934301613

在这种情况下只提供一个字符串:

> as_numbers("549300JV8KEETQJYUG13")
[1] "5493001931820141429261934301613"
Run Code Online (Sandbox Code Playgroud)

r data.table

16
推荐指数
2
解决办法
1438
查看次数

使用第一行数据作为r中的列名

这应该是一个容易的问题,但我遇到了麻烦.我有一个脏的数据集,我无法阅读它header=T.在我阅读并清理它之后,我想使用现在的第一行数据作为列名.我在stackoverflow上尝试了多种方法但没有成功.可能是什么问题呢?t1清理后,数据集应如下所示:

      V1    V2  V3  V4  V5
1   col1    col2    col3    col4
2   row1    2   4   5   56
3   row2    74  74  3   534
4   row3    865 768 8   7
5   row4    68  86  65  87
Run Code Online (Sandbox Code Playgroud)

我试过了:colnames(t1)=t1[1,].什么都没发生.

我试过:names(t1)=ti[1,],什么都没发生.

我试过了: lapply(t1, function(x) {names(x)<-x[1,]; x})

它返回一条错误消息:

误差在[.default(X,1,):维度的数目不正确

有人可以帮忙吗?

r names

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

乘以两个data.tables,保留所有可能性

我现在找不到副本.

我的问题如下:

我有两个data.tables.一个有两列(featurea,count),另一个有三列(featureb,featurec,count).我想要乘以(?),以便我有一个新data.table的所有可能性.诀窍是这些功能不匹配,因此merge解决方案可能无法解决问题.

MRE如下:

# two columns
DT1 <- data.table(featurea =c("type1","type2"), count = c(2,3))

#       featurea count
#1:    type1     2
#2:    type2     3

#three columns
DT2 <- data.table(origin =c("house","park","park"), color =c("red","blue","red"),count =c(2,1,2))

#   origin color count
#1:  house   red     2
#2:   park  blue     1
#3:   park   red     2
Run Code Online (Sandbox Code Playgroud)

在这种情况下,我的预期结果data.table如下:

> DT3
   origin color featurea total
1:  house   red    type1     4
2:  house   red    type2     6
3:   park  blue    type1     2
4:   park …
Run Code Online (Sandbox Code Playgroud)

r data.table

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

扩展一个函数,该函数将data.table作为参数使用完整表(而不是子集)

我有一个函数,对于1行的data.table(data.frame),但不适用于完整的data.table.我想扩展函数以考虑输入data.table的所有行.

论证的要点如下:

data.table(tryshort3)其中字段是字符串,需要用另一个data.table(mapping),MRE中的另一个字符串替换,如下所示:

#this is the original data.table
tryshort3 <- structure(list(country = c("AT", "AT", "MT", "DE", "CH", "XK"
), name = c("ASDF AG", "ASDF GMBH", "ASDF DF", "ASDF KG", "ASDF SA", 
"ASDF DAF"), address = c("ACDSTR. 3", "ACDSTR. 4", "ACDSTR. 5", 
"ACDSTR. 6", "ACDSTR. 7", "ACDSTR. 8")), .Names = c("country", 
"name", "address"), row.names = c(NA, -6L), class = c("data.table", 
"data.frame"))



#this is the "mapping
mapping <- structure(list(country = c("AT", "AT", "DE", "DE", "HU"), short.form = c("AG", …
Run Code Online (Sandbox Code Playgroud)

indexing r data.table

5
推荐指数
1
解决办法
89
查看次数

如何停止read.table从R中不同精度的四舍五入数字?

我正在尝试将包含纬度和经度的文本文件导入到 中R,它们都具有不同的精度(即小数点后的点)。当我尝试使用 时read.table,数据会导入但在小数点后 5 位处截断。有没有解决的办法?我在文档中没有找到任何有效的内容。

文本文件中的数据示例:

35.326354762000001 91.761496755
35.512443542 92.356571172
35.319078183999999 92.233513991
35.315654623 91.912230315
35.293864976999998 92.442997238
35.435569418 92.231860894
Run Code Online (Sandbox Code Playgroud)

谢谢。

r digits read.table

3
推荐指数
1
解决办法
7147
查看次数

如何在R中的表中保留向量的顺序?

很简单的问题,我想.我试图为不同类型的对象(使用类'acf'和类型'list')执行此操作,但我认为答案很容易扩展为vector(类数字,类型'double'):

 x<-c(4, 5, 6, 1, 2, 10, 15)
 table(x)
 x
 1  2  4  5  6 10 15 
 1  1  1  1  1  1  1 
Run Code Online (Sandbox Code Playgroud)

我希望表的输出与向量(4,5,6,1,2,10,15)的顺序相同.我怎样才能做到这一点?

sorting r

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

INSERT INTO或UPDATE有两个条件

这个问题乍一看似乎很容易,但我根本没有找到合理时间的解决方案.

考虑一个具有以下特征的表:

ID INTEGER PRIMARY KEY AUTOINCREMENT
name INTEGER
values1 INTEGER
values2 INTEGER
dates DATE
Run Code Online (Sandbox Code Playgroud)

每天生成N个新行,用于将来的日期,以及来自有限列表的"名称".我想在有新数据时插入一个新行,但如果已经有一行包含'name'和'dates',只需更新它.

请注意,当前提出的检查条件的SPROC解决方案是不可行的,因为这是从另一种语言推送的数据.

mysql sql

0
推荐指数
1
解决办法
307
查看次数

r删除不符合子集标准的行

我已经对我的df进行了攻击,为渔业区域和不同的渔具和物种制作了一系列着陆(重量)时间序列.我想删除每个捕鱼区域的所有行+渔具+ Species.Code组合,其中时间序列的平均着陆重量小于10吨.

这是我的代码的一个例子(每个组合的年份范围并不总是相同);

    Year   Species.Code gear        region  Landings.t
    1988    COD         creel       Greece  1
    1992    COD         creel       Greece  2
    1994    COD         creel       Greece  1
    1996    COD         creel       Greece  2
    2001    COD         creel       Greece  1
    2002    COD         creel       Greece  1
    2003    COD         creel       Greece  1
    1984    LOB         creel       Cyprus  24
    1985    LOB         creel       Cyprus  18
    1986    LOB         creel       Cyprus  21
    1987    LOB         creel       Cyprus  10
    1988    LOB         creel       Cyprus  38
    1989    LOB         creel       Cyprus  35
    1990    LOB         creel       Cyprus  29
    1991    LOB …
Run Code Online (Sandbox Code Playgroud)

grouping r subset

0
推荐指数
1
解决办法
287
查看次数

标签 统计

r ×7

data.table ×3

digits ×1

grouping ×1

indexing ×1

mysql ×1

names ×1

read.table ×1

sorting ×1

sql ×1

subset ×1