标签: strsplit

strsplit和lapply

我在表单的某些文本中有一个字符串"12,34,77",包括引号.

我需要将每个数字的值放入列表中.我尝试使用lapplystrsplit:

control2=lapply(strsplit(data$values,","),as.numeric)
Run Code Online (Sandbox Code Playgroud)

但我得到错误:

非角色论证

我究竟做错了什么?

r strsplit

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

使用Strsplit和R连接拆分R中的大型数据文件

您好我正在尝试将大数据文件读入R.它是一个制表符分隔文件,但前两列填充了由"|"分隔的多个数据.该文件看起来像:

A|1   B|2   0.5  0.4
C|3   D|4   0.9  1
Run Code Online (Sandbox Code Playgroud)

我只关心第一列和第二列以及第三和第四列中的第一个值.最后,我希望最终得到每个行的向量,如下所示:

A  B  0.5  0.4
Run Code Online (Sandbox Code Playgroud)

我正在使用连接来读取文件:

con <- file("inputfile.txt", open = "r")
lines <- readLines(con)
Run Code Online (Sandbox Code Playgroud)

这给了我:

lines[1]
[1] "A|1\tB|2/t0.5\t0.4"
Run Code Online (Sandbox Code Playgroud)

然后我使用strsplit分割制表符分隔文件:

linessplit <- strsplit(lines, split="\t")
Run Code Online (Sandbox Code Playgroud)

这给了我:

linessplit[1]
[1] "A|1" "B|2" 
[3] "0.5" "0.4"
Run Code Online (Sandbox Code Playgroud)

当我尝试以下操作将"A | 1"拆分为"A""1"时:

line1 <- linessplit[1]
l1 <- strsplit(line1[1], split = "|")
Run Code Online (Sandbox Code Playgroud)

我明白了:

"Error in strsplit(line1[1], split = "|") : non-character argument"
Run Code Online (Sandbox Code Playgroud)

有没有人有办法解决这个问题?谢谢!

r strsplit

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

如何提取R的strsplit()的结果

关于问题 :

我有一个字符串向量foo:

>foo = c("1x2","3x4","5x6","7x8","9x10")
Run Code Online (Sandbox Code Playgroud)

我将单个字符串拆分为"x"并将结果粘贴到goo中:

>goo = strsplit(foo, "x")
>goo
[[1]]
[1] "1" "2"

[[2]]
[1] "3" "4"

[[3]]
[1] "5" "6"

[[4]]
[1] "7" "8"

[[5]]
[1] "9"  "10"
Run Code Online (Sandbox Code Playgroud)

如何从此列表中提取第一个和第二个"列"?(我想要(1,3,5,7,9)和(2,4,6,8,10))

r strsplit

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

如何为多个 list.files 提取 R 中“/”之前的路径?

假设我在 R 中使用list.files()获得了下一个向量:

paths <- c("/home/user/myfolder/ERA/amsterdam/amsterdam1.nc", "/home/user/myfolder/ERA/amsterdam/amsterdam2.nc", 
       "/home/user/myfolder/CLMcom/HadCruz/run1/paris/paris1.nc", "/home/user/myfolder/CLMcom/HadCruz/run1/paris/paris2.nc",
       "/home/user/myfolder/CNRM/CLMcom/rcp85/run1/helsinki/helsinki1.nc")

nchar(paths)
[1] 47 47 55 55 63
Run Code Online (Sandbox Code Playgroud)

如您所见,矢量路径确实具有不同大小的对象。

我想从路径中获取包含所有对象但没有内部文件名的新向量,例如:

> new_paths
[1] "/home/user/myfolder/ERA/amsterdam/"                   
"/home/user/myfolder/ERA/amsterdam/"                  
[3] "/home/user/myfolder/CLMcom/HadCruz/run1/paris/"       
"/home/user/myfolder/CLMcom/HadCruz/run1/paris/"      
[5] "/home/user/myfolder/CNRM/CLMcom/rcp85/run1/helsinki/"
Run Code Online (Sandbox Code Playgroud)

我需要这个,因为我想创建一个循环,其中对于向量 new_paths中的每个i,我将使用system运行一个终端命令

我知道strsplit有可能,但是,我不是在 R 中操作文件名的专家。有人知道这种可能性吗?

substring r character strsplit

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

Strsplit 在每个字符处分割字符串

我有一个像这样的巨大数据集:

customer_id     customer_math
  15251           10001010
  10101           11111111
  84787           10101010
Run Code Online (Sandbox Code Playgroud)

我想在每个字符处拆分 customer_math 以接收如下所示的 df:

customer_id     2012   2013   2014   2015  2016  2017 2018 2019
  15251           1      0     0       0    1     0     1    0
  10101           1      1     1       1    1     1     1    1   
  84787           1      0     1       0    1     0     1    0
Run Code Online (Sandbox Code Playgroud)

我尝试过但失败了。

你能帮我解决这个问题吗?

非常感谢您的支持!

r strsplit

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

R data.table 使用 tstrsplit 分解列

我以以下data.table为例

df = data.table(id = c(1, 2, 3), val=c("['hello', 'world']", "['hi']", "['so', 'there']"))
Run Code Online (Sandbox Code Playgroud)

我想将像对象一样的列表拆分为id重复的单独行。所以data.table我想要的预期如下

df2 = data.table(id = c(1, 1, 2, 3, 3), val=c("hello", "world", "hi", "so", "there"))
Run Code Online (Sandbox Code Playgroud)

我尝试了以下

df[, c("test") := tstrsplit(val, ",", fixed=TRUE)]
Run Code Online (Sandbox Code Playgroud)

但是,我收到以下错误

误差在[.data.table(DF,:=(C( “测试”),tstrsplit(VAL, “”,固定= TRUE))):提供的2项被分配给3个项目栏'测试'的。如果您希望“回收” RHS,请使用 rep() 向您的代码读者明确说明这一意图。

有人可以指出我在这里做错了什么吗?提前致谢。

r strsplit data.table

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

为什么 strsplit 不能处理我的字符串?

我想结合 R 的 rev() 函数和 strsplit 函数来检查字符串是否是回文。我的想法是使用 strsplit() 将字符串分割成单个字母,然后对结果使用 rev 来反转字母的顺序。那么,说:

a = "summer"
Run Code Online (Sandbox Code Playgroud)

我们这样做:

b = strsplit(a,"")
Run Code Online (Sandbox Code Playgroud)

我们得到:

[[1]]
[1] "s" "u" "m" "m" "e" "r"
Run Code Online (Sandbox Code Playgroud)

看起来应该可以。但对此使用 rev :

rev(b)
Run Code Online (Sandbox Code Playgroud)

并且输出不会改变:

[[1]]
[1] "s" "u" "m" "m" "e" "r"
Run Code Online (Sandbox Code Playgroud)

现在,我已经缩小了答案,使其与“[[1]]”有关,我将其视为列表符号。如果我们这样做:

c = strsplit(a,"")[[1]]

我们得到:

[1]“s”“u”“m”“m”“e”“r”

即没有“[[1]]”。现在,如果我们在这里使用 rev(c),我们会得到所需的结果:

[1] "r" "e" "m" "m" "u" "s"
Run Code Online (Sandbox Code Playgroud)

同样,如果我们有:

d = 1:10
Run Code Online (Sandbox Code Playgroud)

并使用 rev(d),我们得到:

[1] 10  9  8  7  6  5  4  3  2  1
Run Code Online (Sandbox Code Playgroud)

这两次成功尝试的共同点是缺乏列表符号。有人能告诉我 R 如何处理我们的初始字符串以及为什么使用带有 strsplit 的列表表示法可以让我们正确使用 rev 吗?

string r list palindrome strsplit

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

在需要时使用strsplit拆分字符向量与变量(R)中的所有观察值不一致

我的数据如下所示:

   duration                       obs   another
 1 1.801760     ID: 10 DAY: 6/10/13 S    orange
 2 1.868500     ID: 10 DAY: 6/10/13 S     green
 3 0.233562     ID: 10 DAY: 6/10/13 S    yellow
 4 5.538760       ID:96 DAY: 6/8/13 T    yellow
 5 3.436700       ID:96 DAY: 6/8/13 T      blue
 6 0.533856       ID:96 DAY: 6/8/13 T      pink
 7 2.302250       ID:96 DAY: 6/8/13 T    orange
 8 2.779420       ID:96 DAY: 6/8/13 T     green
Run Code Online (Sandbox Code Playgroud)

我只包含了3个变量,但实际上我的数据有很多.我的问题是看丑陋的"obs"变量.我从另一个人那里收到了这些数据,这些人不一致地将这些信息输入到他们正在使用的软件中.

'obs'包含三条信息: - id(ID:10,ID:96等) - 日期(M/D/Y) - 标识符(S或T)

我想分割这些信息并提取ID号(10或96),日期(例如6/8/13)和标识符(S或T).

为此,我尝试使用strsplit进行以下操作:

temp<-strsplit(as.character(df$obs), " ")
mat<-matrix(unlist(temp), ncol=5, byrow=TRUE)
Run Code Online (Sandbox Code Playgroud)

我认为这可以像我的实际数据那样工作,我有130,000个观察结果,我没有意识到某些观察结果存在id在"ID:"和数字之间没有空格的问题.例如,在上面的数据中,"ID:96"在冒号和数字之间没有空格.显然,我收到了这条警告信息: …

r gsub strsplit

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

R中范围之间的中点

我有一个列,其中包含转化率的估算数字;

Type  Conversion
A      90
B      84
C      85-90
D      60-70
Run Code Online (Sandbox Code Playgroud)

问题是,如果转换是在一个范围内给出的,我需要创建一个新的列,它取中间点.所以这样的事情;

Type   Conversion
A      90
B      84
C      87.5
D      65
Run Code Online (Sandbox Code Playgroud)

我怎么能在R中这样做?

r strsplit

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

提取一些不同长度的字符串

假装我有一个向量:

testVector <- c("I have 10 cars", "6 cars", "You have 4 cars", "15 cars")
Run Code Online (Sandbox Code Playgroud)

有没有办法解析这个向量,所以我只能存储数值:

10, 6, 4, 15
Run Code Online (Sandbox Code Playgroud)

如果问题只是"15路车"和"6辆",我知道如何解析,但我有与具有文本在太前面琴弦难度!任何帮助是极大的赞赏.

string r strsplit

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

标签 统计

r ×10

strsplit ×10

string ×2

character ×1

data.table ×1

gsub ×1

list ×1

palindrome ×1

substring ×1