小编Mon*_*ift的帖子

R:数据框中的重音字符

我很困惑为什么某些字符(例如“?”、“?”和“?”)在数据框中丢失了它们的变音符号,而其他字符(例如“Š”和“š”)不会。顺便说一下,我的操作系统是 Windows 10。在我下面的示例代码中,向量 czechvec 有 11 个单字符字符串,都是斯拉夫语重音字符。R 正确显示这些字符。然后使用 czechvec 作为第二列创建数据框 mydf (使用函数 I() 因此它不会转换为因子)。但是,当 R 显示 mydf 或 mydf 的任何行时,它会将这些字符中的大部分转换为它们的纯 ASCII 等价物;例如 mydf[3,] 将字符显示为“E”而不是“?”。但是用行和列下标,例如 mydf[3,2],它正确地显示了重音字符(“?”)。为什么 R 显示整行或仅显示一个单元格会有所不同?为什么像“Š”这样的一些字符完全不受影响?此外,当我将此数据框写入文件时,即使我指定了 fileEncoding="UTF-8",它也会完全失去重音。

> charvals <- c(193, 269, 282, 268, 262, 263, 348, 349, 350, 352, 353)
> hexvals  <- as.hexmode(charvals)
> czechvec <- unlist(strsplit(intToUtf8(charvals), ""))
> czechvec
[1] "Á" "?" "?" "?" "?" "?" "?" "?" "?" "Š" "š"
> 
> mydf = data.frame(dec=charvals, char=I(czechvec), hex=I(format(hexvals, width=4, upper.case=TRUE)))
> mydf
   dec char  hex
1 …
Run Code Online (Sandbox Code Playgroud)

r character-encoding dataframe

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

R - 测试一对向量是否不相交的有效方法

我想知道两个向量是否有任何共同的元素.我不关心元素是什么,有多少共同元素,或者它们在任何一个向量中的位置.我只需要一个简单,快捷的功能EIC(vec1, vec2),如果存在两个某个元素返回TRUE vec1并且vec2如果没有常见的两种元素,FALSE.我们也可以假设既不包含vec1也不vec2包含NA,但可能有重复的值.

我想过有五种方法可以做到这一点,但它们看起来效率都很低:

EIC.1 <- function(vec1, vec2) length(intersect(vec1, vec2)) > 0
# I want a function that will stop when it finds the first 
# common element between the vectors, and return TRUE. The
# intersect function will continue on and check whether there are
# any other common elements.

EIC.2 <- function(vec1, vec2) any(vec1 %in% vec2)

EIC.3 <- function(vec1, vec2) any(!is.na(match(vec1, vec2)))
# the match function goes …
Run Code Online (Sandbox Code Playgroud)

comparison r vector

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

标签 统计

r ×2

character-encoding ×1

comparison ×1

dataframe ×1

vector ×1